Modül:kategori ağacı/dil

Merhaba, buraya Modül:kategori ağacı/dil kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:kategori ağacı/dil kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:kategori ağacı/dil kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:kategori ağacı/dil kelimesi hakkında bilmeniz gereken her şey burada. Modül:kategori ağacı/dil 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 p = {}

local dilDuzenle = require("Modül:tr-araçlar").dilDuzenle
local diller = require('Modül:diller')

function makeCategoryLink(object, tip)
		return "]"
end

function bagKutusu(lang, vikipedi, kardes, girdi)
	local wiktionarylinks = "''Yok.''"
	
	local canonicalName = lang:getirAsilAd()
	local wikimediaLanguages = lang:getirVikimedyaDilleri()
	local categoryName = lang:getirKategoriAdi()
	local wikipediaArticle = lang:getirVikipediMaddesi() or vikipedi
	
	if wikimediaLanguages and wikimediaLanguages then
		wiktionarylinks = {}
		
		for _, wikimedialang in ipairs(wikimediaLanguages) do
			table.insert(wiktionarylinks,
				(wikimedialang:getirAsilAd() ~= canonicalName and "(''" .. wikimedialang:getirAsilAd() .. "'') " or "") ..
				"''']'''")
		end
		
		wiktionarylinks = table.concat(wiktionarylinks, "<br/>")
	end
	
	return table.concat{
[=[<div class="main-box right-box">
<div style="text-align: center; margin-bottom: 10px; margin-top: 5px">''']=], categoryName, [=['''</div>

{| style="border: 0; font-size: 90%;"
|-
| style="vertical-align: middle; height: 35px; width: 35px;" | ]
|| ''Vikisözlük'ün ]=], categoryName, =], (wikimediaLanguages and "ları" or "u"), [=[''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], wiktionarylinks, [=[

|-
| style="vertical-align: middle; height: 35px" | ]
|| '']=], categoryName, [=[ hakkındaki Vikipedi maddesi''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], (wikipediaArticle == "-" and "''Yok.''" or "''']'''"), [=[

|-
| style="vertical-align: middle; height: 35px" | ]
|| ''Vikimedya Commons'ta bulunan ]=], categoryName, [=[ ile ilgili kardeş projelere olan bağlantılar''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], (kardes == "-" and "''Yok.''" or "''']'''"), [=[

|-
| style="vertical-align: middle; height: 35px" | ]
|| ]=], categoryName, [=[ açıklamaları
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | '''=], canonicalName, ]'''
|-
| style="vertical-align: middle; height: 35px" | ]
|| ]=], categoryName, [=[ dizini
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | '''=], canonicalName, ]'''
|-
| style="vertical-align: middle; height: 35px" | ]
|| ]=], categoryName, [=[ girdisi
|-
| colspan="2" style="padding-left: 10px;" | ''']=], require("Modül:bağlantılar").tam_bag({dil = require("Modül:diller").getirKodaGore("tr"), sozcuk = girdi or canonicalName}), [=['''
|}
</div>]=]
}
end

function bilgiKutusu(lang)
	local ret = {}
	
	table.insert(ret, "<div class=\"main-box\" style=\"display:inline-block;padding:0;\">\n")
	table.insert(ret, "<table class=\"main-table\">\n")
	table.insert(ret, "<tr>\n<th colspan=\"2\" class=\"plainlinks\"></th>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>Asıl adı</th><td style='background:white;'>" .. lang:getirAsilAd() .. "</td>\n</tr>\n")
	
	local digerAdlari = lang:getirDigerAdlari(true)
	if digerAdlari then
		local adlar = {}
		
		for _, ad in ipairs(digerAdlari) do
			table.insert(adlar, "<li>" .. ad .. "</li>")
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Diğer adları</th><td style='background:white;'><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end
	
	local digerleri = lang:getirDigerleri()
	if digerleri then
		local adlar = {}
		
		for _, ad in ipairs(digerleri) do
			table.insert(adlar, "<li>" .. ad .. "</li>")
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Diğer adları</th><td style='background:white;'><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end

	local cesitleri = lang:getirCesitleri()
	if cesitleri then
		local adlar = {}
		
		for _, ad in ipairs(cesitleri) do
			if type(ad) == "string" then
				table.insert(adlar, "<li>" .. ad .. "</li>")
			else
				assert(type(ad) == "table")
				local first_var
				local subvars = {}
				for i, var in ipairs(ad) do
					if i == 1 then
						first_var = var
					else
						table.insert(subvars, "<li>" .. var .. "</li>")
					end
				end
				if #subvars > 0 then
					table.insert(adlar, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. table.concat(subvars, "\n") .. "</ul></dd></dl></li>")
				elseif first_var then
					table.insert(adlar, "<li>" .. first_var .. "</li>")
				end
			end
		end
		
		if #adlar > 0 then
			table.insert(ret, "<tr>\n<th>Çeşitleri</th><td style='background:white;'><ul>" .. table.concat(adlar, "\n") .. "</ul></td>\n</tr>\n")
		end
	end
	
	table.insert(ret, "<tr>\n<th>]</th><td style='background:white;'><code>" .. lang:getirKod() .. "</code></td>\n</tr>\n")
	table.insert(ret, "<tr>\n<th>]</th>\n")
	
	local fam = lang:getirAile()
	local famCode = fam and fam:getirKod()
	
	if not fam then
		table.insert(ret, "<td style='background:white;'>sınıflandırılmamış</td>")
	elseif famCode == "art" then
		table.insert(ret, "<td style='background:white;'>]</td>")
	else
		table.insert(ret, "<td style='background:white;'>" .. makeCategoryLink(fam, "fam") .. "</td>")
	end
	
	table.insert(ret, "\n</tr>\n<tr>\n<th>Soyu</th>\n")
	
	local ancestors, ancestorChain = lang:getirSoylar(), lang:getirSoyZinciri()
	if ancestors then
		local ancestorList = {}
		
		for i, anc in ipairs(ancestors) do
			ancestorList = "<li>" .. makeCategoryLink(anc) .. "</li>"
		end
		
		table.insert(ret, "<td style='background:white;'><ul>\n" .. table.concat(ancestorList, "\n") .. "</ul></td>\n")
	elseif ancestorChain then
		table.insert(ret, "<td style='background:white;'><ul>\n")
		
		local chain = {}
		
		for i, anc in ipairs(ancestorChain) do
			chain = "<li>" .. makeCategoryLink(anc) .. "</li>"
		end
		
		table.insert(ret, table.concat(chain, "\n<ul>\n"))
		
		for _, _ in ipairs(chain) do
			table.insert(ret, "</ul>")
		end
		
		table.insert(ret, "</td>\n")
	else
		table.insert(ret, "<td style='background:white;'>bilinmiyor</td>\n")
	end
	
	table.insert(ret, "</tr>\n")
	
	local scripts = lang:getirAlfabeler()
	
	if scripts then
		local script_text = {}
		
		for _, sc in ipairs(scripts) do
			local text = {}
			local code = sc:getirKod()
			if code ~= "Hira" then
				if code == "musical" or code == "Zmth" or code == "Zsym" or code == "Ruminumerals" then
				else
				table.insert(text, "<li>" .. makeCategoryLink(sc))
				end
			end
			
			if code == "Jpan" then
				local m_scripts = require("Modül:alfabeler")
				local Hani = m_scripts.getirKodaGore("Hani")
				local Hira = m_scripts.getirKodaGore("Hira")
				local Kana = m_scripts.getirKodaGore("Kana")
				table.insert(text, "<ul>")
				table.insert(text, "<li>" .. makeCategoryLink(Hani) .. "</li>")
				table.insert(text, "<li>" .. makeCategoryLink(Hira) .. "</li>")
				table.insert(text, "<li>" .. makeCategoryLink(Kana) .. "</li>")
				table.insert(text, "</ul>")
			elseif code == "Kore" then
				local m_scripts = require("Modül:alfabeler")
				local Hang = m_scripts.getirKodaGore("Hang")
				local Hani = m_scripts.getirKodaGore("Hani")
				table.insert(text, "<ul>")
				table.insert(text, "<li>" .. makeCategoryLink(Hang) .. "</li>")
				table.insert(text, "<li>" .. makeCategoryLink(Hani) .. "</li>")
				table.insert(text, "</ul>")
			end
			
			table.insert(text, "</li>")
			
			table.insert(script_text, table.concat(text, "\n"))
		end
		
		table.insert(ret, "<tr>\n<th>]</th>\n<td style='background:white;'><ul>\n" .. table.concat(script_text, "\n") .. "</ul></td>\n</tr>\n")
	else
		table.insert(ret, "<tr>\n<th>]</th>\n<td style='background:white;'>belirtilmemiş</td>\n</tr>\n")
	end
	
	if lang:varmiCeviri() then
		local translit_module = lang._rawData.ceviri_modulu
		local translit_module_info = {}
		table.insert(translit_module_info,
			("]"):format(translit_module))
		
		if translit_module == "alfabeçeviri-yönlendirme" then
			local data = mw.loadData("Modül:alfabeçeviri-yönlendirme/veri")
			if data then
				table.insert(translit_module_info, ":")
				local redirects_to = {}
				local m_scripts = require "Modül:alfabeler"
				for script, data in require "Modül:table".sortedPairs(data) do
					-- Skip boolean fields like "debug_mode" and "noError".
					if type(data) == "table" then
						table.insert(redirects_to,
							("\n* <code>%s</code>: %s"):format(
								script,
								data.module and ("]"):format(data.module)
									or "(yok)"))
					end
				end
				table.insert(translit_module_info, table.concat(redirects_to))
			end
		end
		table.insert(ret, [=[
<tr>
<th>]</th>
<td style='background:white;'>]=] .. table.concat(translit_module_info) .. [=[</td>
</tr>
]=])
	end
	local wikidataItem = lang:getirVikiveriItemi()
	if wikidataItem and mw.wikibase then
		local URL = mw.wikibase.getEntityUrl(wikidataItem)
		local link
		if URL then
			link = ''
		else
			link = '<span class="error">Geçersiz Vikiveri ögesi: <code>' .. wikidataItem .. '</code></span>'
		end
		table.insert(ret, "<tr><th>Vikiveri</th><td style='background:white;'>" .. link .. "</td></tr>")
	end
	
	table.insert(ret, "</table></div>")
	
	local ok, tree_of_descendants = pcall(
		require("Modül:aile ağacı").print_children,
		lang:getirKod(), {
			protolanguage_under_family = true,
			must_have_descendants = true,
	})
	if ok then
		if tree_of_descendants then
			table.insert(ret, "<div style='clear:left;'></div>")
			table.insert(ret, '<div class="NavFrame main-box" style="display:inline-block;padding:0;width:auto !important;">')
			table.insert(ret, '<div class="NavHead" style="background: #f8f9fa; padding: 10px;"><span style="padding-right: 20px;">Aile ağacı</span></div>')
			table.insert(ret, '<div class="NavContent" style="text-align: left; padding: 10px;">')
			table.insert(ret, tree_of_descendants)
			table.insert(ret, '</div></div>')
		end
	end

	return table.concat(ret)
end

function alt(lang)
	local tablo = {}
	
	local can = lang:getirAsilAd()
	local ekliDil = dilDuzenle(can)
	
	table.insert(tablo, require("Modül:kategori ağacı/konu").yaziSoz(can, require("Modül:temalar").getirAsilAdaGore("maddeler"), ekliDil))
	
	if mw.title.new("Kategori:Kullanıcı " .. lang:getirKod()).exists then
		table.insert(tablo, "<ul><li> ]: Akıcı bir seviyede ]=] .. can .. =])
	end

	return "\n\n"..table.concat(tablo, "\n")
end

function kategoriler(lang, tum)
	if lang:getirKod() == "mul" then
		table.insert(tum.kat, "]")
	else
		table.insert(tum.kat, "]")
	end
	
	local fam = lang:getirAile()
	local famCode = fam and fam:getirKod()
	
	if not fam then
		table.insert(tum.kat, "]")
	elseif famCode == "art" then
		if lang:getirTip() == "appendix-constructed" then
			table.insert(tum.kat, "]")
		else
			table.insert(tum.kat, "]")
		end
		
		for _, anc in ipairs(lang:getirSoylar()) do
			table.insert(tum.kat, "]")
		end
	else
		table.insert(tum.kat, "]")
		
		if lang:getirTip() == "reconstructed" then
			table.insert(tum.kat, "]")
		end
		
		if famCode == "crp" then
			for _, anc in ipairs(lang:getirSoylar()) do
				table.insert(tum.kat, "]")
			end
		end
	end
	
	for _, sc in ipairs(lang:getirAlfabeler()) do
		local code = sc:getirKod()
		if code == "musical" or code == "Zmth" or code == "Zsym" or code == "Ruminumerals" then
		else
			table.insert(tum.kat, "]")
		end
		
		if sc:getirKod() == "Jpan" then
			table.insert(tum.kat, "]")
			table.insert(tum.kat, "]")
			table.insert(tum.kat, "]")
		elseif sc:getirKod() == "Kore" then
			table.insert(tum.kat, "]")
			table.insert(tum.kat, "]")
		end
	end
end

function p.kategoriAgaci(tum)
	local lang = require("Modül:diller").getirKodaGore(tum.par)
	local vikipedi = tum.par
	local kardes = tum.par
	local girdi = tum.par
	
	if lang then
		ret = ""
		
		if lang:getirKod() == "und" then
			ret =
				"Bu kategori '''" .. lang:getirKategoriAdi() .. "''' sözcüklerin ana kategorisidir, Vikisözlük'de '''" .. lang:getirKod() .. "''' ] ile bulunmaktadır. " ..
				"Bu dil henüz akademisyenler tarafından anlamları çözülememiş sözcükleri içerir."
		end
	
		local canonicalName = lang:getirAsilAd()
		
		ret = ret .. "Bu kategori '''" .. lang:getirKategoriAdi() .. "''' sözcüklerin ana kategorisidir.\n\n" .. canonicalName .. " hakkında bilgi:\n\n" .. bilgiKutusu(lang)
		
		if lang:getirTip() == "reconstructed" then
			ret = ret .. "\n\n" ..
				canonicalName .. " bir yapay dildir. Bu dilin sözcükleri ve kökenleri direkt olarak hiçbir yazılı eserde geçmemektedir, ama ''karşılaştırmalı yöntem'' kullanılarak geliştirilmiştir, " ..
				"ki bu yöntem diller arasındaki tesadüf veya sözcük alma ile açıklanamayan düzenli benzerlikleri bulur ve bu benzerliklerden yola çıkarak antik formları tahmin eder.\n\n" ..
				"Vikisözlük'deki ]ne göre, " .. canonicalName ..
				" altındaki kategoriler ana madde alanında '''eklenmemeli''', ama YeniKurum: alan adında eklenebilir."
		elseif lang:getirTip() == "appendix-constructed" then
			ret = ret .. "\n\n" ..
				canonicalName .. " nadir kullanılan bir yapay dildir. " ..
				"Vikisözlük'deki ]ne göre, " .. canonicalName ..
				" altındaki kategoriler ana madde alanında '''eklenmemeli''', ama Ek: alan adında eklenebilir." ..
				" Bu dildeki bütün sözcükler ] sayfasında bulunabilir."
		end
		
		local about = mw.title.new("Vikisözlük:" .. canonicalName .. " içerik politikası")
		
		if about.exists then
			ret = ret .. "\n\n" ..
				"Lütfen " .. lang:getirKategoriAdi() .. " girdileri oluşturmadan önce ''']''' sayfasından bu dil ile ilgili özel durumları ve diğer bilgileri öğrenin."
		end
	
		ret = ret .. alt(lang)
		table.insert(tum.tab, bagKutusu(lang, vikipedi, kardes, girdi))
		kategoriler(lang, tum)
	else
		error("Girdiğiniz " .. tum.par .. " isimli dil adı geçerli bir dil değil")
	end
	
	table.insert(tum.gor, ret)
end

return p