Modül:ja-başlıkbaşı

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

Bu Lua modülü, şu şablonların çıktısını vermektedir:


local m_ja = require("Modül:ja")
local m_ja_ruby = require('Modül:ja-ruby')

local find = mw.ustring.find

local export = {}
local pos_functions = {}

local lang = require("Modül:diller").getirKodaGore("ja")
local sc = require("Modül:alfabeler").getirKodaGore("Jpan")
local Latn = require("Modül:alfabeler").getirKodaGore("Latn")

local Japonca_symbols = '%ー・=?!。、'
local katakana_range = 'ァ-ヺーヽヾ'
local hiragana_range = 'ぁ-ゖーゞゝ'
local kana_range = katakana_range .. hiragana_range .. Japonca_symbols
local Japonca_scripts_range = kana_range .. '一-鿌・々'

local katakana_pattern = '^*$'
local hiragana_pattern = '^*$'
local kana_pattern = '^*$'
local kana_pattern_full = '^*$'

local function remove_links(text)
	return (text:gsub("%]-|", ""):gsub("%%]", ""))
end

local function detect_kana_script(kana)
	if find(kana, katakana_pattern) then
		return 'kata'
	elseif find(kana, hiragana_pattern) then
		return 'hira'
	elseif find(kana, kana_pattern) then
		return 'both'
	else
		return nil
	end
end

local en_numerals = {
	"bir", "iki", "üç", "dört", "beş",
	"altı", "yedi", "sekiz", "dokuz", "on",
	"on bir", "on iki", "on üç", "on dört", "on beş"
}

local en_grades = {
	"birinci sınıf", "ikinci sınıf", "üçüncü sınıf",
	"dördüncü sınıf", "beşinci sınıf", "altıncı sınıf",
	"orta okul", "jinmeiyō", "hyōgaiji"
}

local aliases = {
	='tr', ='tr',
	='in', ='in', ='in',
	='1', ='2', ='irr'
}

local function kana_to_romaji(kana, veri, args)
	-- make adjustments for -u verbs and -i adjectives by placing a period before the last character
	-- to prevent romanizing long vowels with macrons
	if (veri.soz_kategorisi == "eylemler") or (veri.soz_kategorisi == "ön adlar" and (args == "i" or args == "い" or args == "is")) then
		kana = mw.ustring.gsub(kana,'()$','.%1')
	end
	-- hyphens for prefixes, suffixes, and counters (classifiers)
	if veri.soz_kategorisi == "prefixes" then
		kana = kana:gsub('%-?$', '-')
	elseif veri.soz_kategorisi == "suffixes" or veri.soz_kategorisi == "counters" or veri.soz_kategorisi == "classifiers" then
		kana = kana:gsub('^%-?', '-')
	end
	-- automatic caps for proper nouns, if not already specified
	if veri.soz_kategorisi == "proper nouns" then
		if not find(kana, '%^') then
			kana = mw.ustring.gsub(kana, '^(.)', '^%1')
			kana = mw.ustring.gsub(kana, '()(.)', '%1^%2')
		end
	end
	kana = m_ja.kana_to_romaji(kana)
	return kana
end

local function historical_kana(args, veri, poscat)
	local hk = args or args
	if hk then
		table.insert(veri.cekimler, {
			etiket = "geleneksel kana",
			"]" .. (poscat == "suru verbs" and 'する' or ''),
		})
		hk = m_ja.kata_to_hira(hk)
		if hk:match'ゐ' then
			table.insert(veri.kategoriler, "Japonca ゐ karakterini içeren geleneksel sözcükler")
		end
		if hk:match'ゑ' then
			table.insert(veri.kategoriler, "Japonca ゑ karakterini içeren geleneksel sözcükler")
		end
		if hk:match'を' and not (veri.kana and veri.kana:match'を') then
			table.insert(veri.kategoriler, "Japonca を karakterini içeren geleneksel sözcükler")
		end
		if hk:match'ぢ' and not (veri.kana and veri.kana:match'ぢ') then
			table.insert(veri.kategoriler, "Japonca ぢ karakterini içeren geleneksel sözcükler")
		end
		if hk:match'づ' and not (veri.kana and veri.kana:match'づ') then
			table.insert(veri.kategoriler, "Japonca づ karakterini içeren geleneksel sözcükler")
		end
	end
end

-- adds category Japonca terms spelled with jōyō kanji or Japonca terms spelled with non-jōyō kanji
-- (if it contains any kanji)
local function categorize_by_kanji(veri, PAGENAME)
	-- remove non-kanji characters
	local onlykanji = mw.ustring.gsub(PAGENAME, '', '')

	local number_of_kanji = mw.ustring.len(onlykanji)
	if number_of_kanji > 0 then
		for i=1,mw.ustring.len(onlykanji) do
			table.insert(veri.kategoriler, ("Japonca %s kanji harflerini içeren sözcükler"):format(en_grades))
		end

		-- categorize by number of kanji
		if number_of_kanji == 1 then
			table.insert(veri.kategoriler, "Japonca bir Han karakteri içeren sözcükler")
		elseif en_numerals then
			table.insert(veri.kategoriler, ("Japonca %s Han karakteri içeren sözcükler"):format(en_numerals))
		end
	end

	-- single-kanji terms
	if mw.ustring.len(PAGENAME) == 1 and mw.ustring.match(PAGENAME, '') then
		table.insert(veri.kategoriler, "Japonca " .. PAGENAME .. " karakterini içeren sözcükler")
		table.insert(veri.kategoriler, "Japonca tek-kanji harfinden oluşan sözcükler")
	end
end

-- categorize by the script of the pagename or specific characters contained in it
local function extra_categorization(veri, PAGENAME, katakana_category)
	-- if PAGENAME is hiragana, put in that category, same for katakana (but do it at the end)
	if detect_kana_script(PAGENAME) == 'hira' then table.insert(veri.kategoriler, "Japonca hiragana") end
	if detect_kana_script(PAGENAME) == 'kata' then table.insert(katakana_category, "Japonca katakana") end
	if find(PAGENAME, "") and find(PAGENAME, '') then
		table.insert(veri.kategoriler, "Japonca birden fazla okunuşu olan sözcükler") end

	for _,character in ipairs({'々','〆','ヶ','ゝ','ゞ','ヽ','ヾ','ゐ','ヰ','ゑ','ヱ','ゔ','ヷ','ヸ','ヹ','ヺ','・','=','゠'}) do
		if mw.ustring.match(PAGENAME,character) then
			table.insert(veri.kategoriler, ("Japonca %s harfini içeren sözcükler"):format(character))
		end
	end

	if find(PAGENAME, "") and find(PAGENAME, "") and veri.soz_kategorisi ~= "proverbs" and veri.soz_kategorisi ~= "phrases" then
		table.insert(veri.kategoriler, "Japonca karışık kana harflerini içeren sözcükler")
	end
end

-- go through args and build inflections by finding whatever kanas were given to us
local function format_headword(args, veri, head)
	local headword_kana_type = detect_kana_script(remove_links(m_ja.remove_ruby_markup(head)))

	local allkana, romajis = {}, {}
	local rep = {}
	local _insert_kana = headword_kana_type and function(k) -- pure-kana-title entry
		if k == '' then return end
		local key = remove_links(m_ja.remove_ruby_markup(k))
		romajis = kana_to_romaji(remove_links(k), veri, args)
		if not rep then
			table.insert(allkana, k)
			rep = true
		end
	end or function(k) -- non-pure-kana-title entry
		if k == '' then return end
		local key = m_ja.kana_to_romaji(remove_links(m_ja.remove_ruby_markup(k)))
		if not rep then
			table.insert(romajis, kana_to_romaji(remove_links(k), veri, args))
			table.insert(allkana, k)
			rep = true
		end
	end

	if headword_kana_type then
		_insert_kana(remove_links(head))
		allkana = head
	end

	for i,arg in ipairs(args) do
		if arg and arg ~= "" and find(arg, kana_pattern_full) then _insert_kana(arg) end
	end
	-- accept "hira" and "kata" but let Lua decide if they are really hiragana or katakana
	if args and args ~= "" then _insert_kana(args) end
	if args and args ~= "" then _insert_kana(args) end
	if args then romajis = args end

	if #allkana == 0 then error('Kana form is required') end
	if #romajis == 0 then error('Romaji is required') end

	local suru_ending = veri.soz_kategorisi == "suru verbs" and ']' or ''
	for _, kana in ipairs(allkana) do
		-- add everything to inflections, except historical hiragana which is next
		-- local format_result = headword_kana_type and allkana or format_ruby(PAGENAME, allkana, data)
		local format_result, format_result_preserved --<ruby> form, () form

		if headword_kana_type then
			format_result = m_ja.remove_ruby_markup(kana)
			format_result_preserved = remove_links(format_result) .. suru_ending
			format_result = format_result .. suru_ending
		else
			local format_table = m_ja_ruby.parse_text(head, kana, {
				try = 'force',
				try_force_limit = 10000
			})
			format_result = m_ja_ruby.to_wiki(format_table, {
				break_link = true,
			}):gsub('<rt>(..-)</rt>', "<rt>]</rt>") .. suru_ending
			format_result_preserved = remove_links(m_ja_ruby.to_markup(format_table)) .. suru_ending
		end

		table.insert(veri.baslar, format_result)
		veri.korunan_baslar = veri.korunan_baslar or format_result_preserved
	end

	suru_ending = veri.soz_kategorisi == "suru verbs" and ' suru' or ''
	for _, rom in ipairs(romajis) do
		table.insert(veri.alfabecevler, ']' .. suru_ending)
	end

	if #romajis > 1 then
		table.insert(veri.kategoriler, "Japonca birden fazla okunuşu olan sözcükler")
	end

	veri.kana = allkana and remove_links(m_ja.remove_ruby_markup(allkana))
end

local function add_transitivity(veri, tr)
	tr = aliases or tr
	if tr == "tr" then
		table.insert(veri.orta_bilgi, 'geçişli')
		table.insert(veri.kategoriler, "Japonca geçişli eylemler")
	elseif tr == "in" then
		table.insert(veri.orta_bilgi, 'geçişsiz')
		table.insert(veri.kategoriler, "Japonca geçişsiz eylemler")
	elseif tr == "both" then
		table.insert(veri.orta_bilgi, 'geçişli veya geçişsiz')
		table.insert(veri.kategoriler, "Japonca geçişli eylemler")
		table.insert(veri.kategoriler, "Japonca geçişsiz eylemler")
	else
		table.insert(veri.kategoriler, "Japonca çatısız eylemler")
	end
end

local function add_inflections(veri, inflection_type, cat_suffix)
	local lemma = veri.korunan_baslar or veri.baslar
	local romaji = remove_links(veri.alfabecevler)
	inflection_type = aliases or inflection_type

	local function replace_suffix(lemma_from, lemma_to, romaji_from, romaji_to)
		-- e.g. 持って来る, lemma = "(も)って来(く)る"
		-- lemma_from = "くる", lemma_to = {"き","きた"}
		local p_kr = katakana_range .. hiragana_range
		local lemma_sub
		local romaji_sub
		local key_pos = {}
		local i1, i2

		romaji_from = romaji_from or m_ja.kana_to_romaji(lemma_from)
		if type(lemma_to) ~= 'table' then lemma_to = {lemma_to} end
		if type(romaji_to) ~= 'table' then romaji_to = {romaji_to} end
		for i, v in ipairs(lemma_to) do
			romaji_to = romaji_to or m_ja.kana_to_romaji(v)
		end

		lemma_sub = lemma
		lemma_from = lemma_from ~= '' and mw.text.split(lemma_from, '') or {} -- lemma_from = {"く","る"}
		local len_lemma_from = #lemma_from -- find the last two kana in "(も)って来(く)る"
		key_pos = {-1}
		for i = len_lemma_from, 1, -1 do
			i1, _, i2 = mw.ustring.find(lemma_sub, ') .. m_ja.hira_to_kata(lemma_from) .. ']()-$')
			if not i1 then return nil end
			i1 = i1 - 1
			key_pos = {i1, i2}
			lemma_sub = mw.ustring.sub(lemma_sub, 1, i1)
		end
		romaji_sub, i1 = romaji:gsub(romaji_from .. '%s*$', '')
		if i1 ~= 1 then return nil end

		local result = {}
		for i, v in ipairs(lemma_to) do
			local result_single = {lemma_sub}
			for j = 1, len_lemma_from do
				table.insert(result_single, mw.ustring.sub(v, j, j))
				table.insert(result_single, mw.ustring.sub(lemma, key_pos, key_pos))
			end
			table.insert(result_single, mw.ustring.sub(v, len_lemma_from + 1))
			result = {lemma = table.concat(result_single), romaji = romaji_sub .. romaji_to}
			-- "(も)って来(" .. "き" .. ")" .. "" .. "" and "(も)って来(" .. "き" .. ")" .. "た" .. ""
		end
		return result -- {{lemma="(も)って来(き)",romaji="motteki"},{lemma="(も)って来(き)た",romaji="mottekita"}}
	end

	local function insert_form(label, ...)
		-- etiket = "stem" or "past" etc.
		-- ... = {lemma=...,romaji=...},{lemma=...,romaji=...}
		local labeled_forms = {etiket = label}
		for _, v in ipairs{...} do
			local table_form = m_ja_ruby.parse_markup(v.lemma)
			local form_term = m_ja_ruby.to_wiki(table_form)
			if not form_term:find'%%]' then
				form_term = ']'
			end
			table.insert(labeled_forms, {
				term = form_term,
				translit = v.romaji,
			})
		end
		table.insert(veri.cekimler, labeled_forms)
	end

	local inflected_forms
	if inflection_type == '1' or inflection_type == '1s' then
		table.insert(veri.orta_bilgi, '<abbr title="godan (tip I) çekimi">godan</abbr>')
		if cat_suffix then
			table.insert(veri.kategoriler, "Japonca tip 1 " .. cat_suffix)
			if cat_suffix == 'verbs' and veri.alfabecevler and mw.ustring.find(remove_links(veri.alfabecevler), 'ru$') then
				table.insert(veri.kategoriler, "Japonca -iru veya -eru ile biten tip 1 eylemler")
			end
		end
		if inflection_type == '1' then
			inflected_forms =
				replace_suffix('く', {'き', 'いた'}, 'ku', {'ki', 'ita'}) or
				replace_suffix('ぐ', {'ぎ', 'いだ'}, 'gu', {'gi', 'ida'}) or
				replace_suffix('す', {'し', 'した'}, 'su', {'shi', 'shita'}) or
				replace_suffix('つ', {'ち', 'った'}, 'tsu', {'chi', 'tta'}) or
				replace_suffix('ぬ', {'に', 'んだ'}, 'nu', {'ni', 'nda'}) or
				replace_suffix('ぶ', {'び', 'んだ'}, 'bu', {'bi', 'nda'}) or
				replace_suffix('む', {'み', 'んだ'}, 'mu', {'mi', 'nda'}) or
				replace_suffix('る', {'り', 'った'}, 'ru', {'ri', 'tta'}) or
				replace_suffix('う', {'い', 'った'}, 'u', {'i', 'tta'})
			if inflected_forms then
				insert_form('stem', inflected_forms)
				insert_form('past', inflected_forms)
			else
				--require("Modül:debug").track("ja-headword/godan conjugation failed")
			end
		else
			inflected_forms =
				replace_suffix('る', {'り', 'った', 'い'}, 'ru', {'ri', 'tta', 'i'}) or --くださる
				replace_suffix('いく', {'いき', 'いった'}, 'iku', {'iki', 'itta'}) or --行く
				replace_suffix('う', {'い', 'うた'}, 'ou', {'oi', 'ōta'}) --問う
			if inflected_forms then
				insert_form('stem', inflected_forms, inflected_forms)
				insert_form('past', inflected_forms)
			else
				--require("Modül:debug").track("ja-headword/godan conjugation special failed")
			end
		end
	elseif inflection_type == '2' then
		table.insert(veri.orta_bilgi, '<abbr title="ichidan (tip II) çekimi">ichidan</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca tip 2 " .. cat_suffix) end
		inflected_forms = replace_suffix('る', {'', 'た'}, 'ru', {'', 'ta'})
		if inflected_forms then
			insert_form('stem', inflected_forms)
			insert_form('past', inflected_forms)
		else
			--require("Modül:debug").track("ja-headword/ichidan conjugation failed")
		end
	elseif inflection_type == 'suru' then
		table.insert(veri.orta_bilgi, '<abbr title="suru (tip III) çekimi">suru</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca suru " .. cat_suffix) end
		inflected_forms =
			replace_suffix('する', {'し', 'した'}, 'suru', {'shi', 'shita'}) or
			replace_suffix('ずる', {'じ', 'じた'}, 'zuru', {'ji', 'jita'})
		if inflected_forms then
			insert_form('stem', inflected_forms)
			insert_form('past', inflected_forms)
		else
			--require("Modül:debug").track("ja-headword/suru conjugation failed")
		end
	elseif inflection_type == 'kuru' then
		table.insert(veri.orta_bilgi, '<abbr title="kuru (tip III) çekimi">kuru</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca kuru " .. cat_suffix) end
		inflected_forms = replace_suffix('くる', {'き', 'きた'}, 'kuru', {'ki', 'kita'})
		if inflected_forms then
			insert_form('stem', inflected_forms)
			insert_form('past', inflected_forms)
		else
			--require("Modül:debug").track("ja-headword/kuru conjugation failed")
		end
	elseif inflection_type == 'i' or inflection_type == 'い' then
		table.insert(veri.orta_bilgi, '<abbr title="-i (tip I) çekimi">-i</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca い-i " .. cat_suffix) end
		inflected_forms = replace_suffix('い', {'く'}, 'i', {'ku'})
		if inflected_forms then
			insert_form('adverbial', inflected_forms)
		else
			--require("Modül:debug").track("ja-headword/-i inflection failed")
		end
	elseif inflection_type == 'is' then
		table.insert(veri.orta_bilgi, '<abbr title="-i (tip I) çekimi">-i</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca い-i " .. cat_suffix) end
		inflected_forms = replace_suffix('いい', {'よく'}, 'ii', {'yoku'})
		if inflected_forms then
			insert_form('adverbial', inflected_forms)
		else
			--require("Modül:debug").track("ja-headword/slightly irregular -i inflection failed")
		end
	elseif inflection_type == 'na' or inflection_type == 'な' then
		table.insert(veri.orta_bilgi, '<abbr title="-na (tip II) çekimi">-na</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca な-na " .. cat_suffix) end
		inflected_forms = replace_suffix('', {']', ']'}, '', {' na', ' ni'})
		insert_form('adnominal', inflected_forms)
		insert_form('adverbial', inflected_forms)

	elseif inflection_type == "yo" then
		table.insert(veri.orta_bilgi, '<abbr title="yodan çekimi (geleneksel)"><sup><small>†</small></sup>yodan</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca yodan " .. cat_suffix) end
	elseif inflection_type == "kami ni" then
		table.insert(veri.orta_bilgi, '<abbr title="kami nidan çekimi (geleneksel)"><sup><small>†</small></sup>nidan</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca kami nidan " .. cat_suffix) end
	elseif inflection_type == "shimo ni" then
		table.insert(veri.orta_bilgi, '<abbr title="shimo nidan çekimi (geleneksel)"><sup><small>†</small></sup>nidan</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca shimo nidan " .. cat_suffix) end
	elseif inflection_type == "rahen" then
		table.insert(veri.orta_bilgi, '<abbr title="r-special çekimi (geleneksel)"><sup><small>†</small></sup>-ri</abbr>')
	elseif inflection_type == "sahen" then
		table.insert(veri.orta_bilgi, '<abbr title="s-special çekimi (geleneksel)"><sup><small>†</small></sup>-se</abbr>')
	elseif inflection_type == "kahen" then
		table.insert(veri.orta_bilgi, '<abbr title="k-special çekimi (geleneksel)"><sup><small>†</small></sup>-ko</abbr>')
	elseif inflection_type == "nahen" then
		table.insert(veri.orta_bilgi, '<abbr title="n-special çekimi (geleneksel)"><sup><small>†</small></sup>-n</abbr>')
	elseif inflection_type == "nari" or inflection_type == "なり" then
		table.insert(veri.orta_bilgi, '<abbr title="-nari çekimi (geleneksel)"><sup><small>†</small></sup>-nari</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca なり-nari " .. cat_suffix) end
	elseif inflection_type == 'tari' or inflection_type == 'たり' then
		table.insert(veri.orta_bilgi, '<abbr title="-tari çekimi (geleneksel)"><sup><small>†</small></sup>-tari</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca たり-tari " .. cat_suffix) end
		inflected_forms = replace_suffix('', {']', ']', ']'}, '', {' taru', ' to', ' toshite'})
		insert_form('adnominal', inflected_forms)
		insert_form('adverbial', inflected_forms, inflected_forms)
	elseif inflection_type == "ka" or inflection_type == "か" then
		table.insert(veri.orta_bilgi, '<abbr title="-ka çekimi (yöresel)"><sup><small>†</small></sup>-ka</abbr>')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca か-ka " .. cat_suffix) end

	elseif inflection_type == 'irr' then
		table.insert(veri.orta_bilgi, 'irregular')
		if cat_suffix then table.insert(veri.kategoriler, "Japonca düzensiz " .. cat_suffix) end
	end
end

pos_functions = function(args, veri)
	add_transitivity(veri, args)
	add_inflections(veri, args, 'verbs')
end

pos_functions = function(args, veri)
	add_inflections(veri, args)
end

pos_functions = function(args, veri)
	table.insert(veri.kategoriler, "Japonca yardımcı eylemler")
	add_inflections(veri, args)
	veri.soz_kategorisi = "eylemler"
end

pos_functions = function(args, veri)
	add_transitivity(veri, args)
	add_inflections(veri, 'suru', 'eylemler')
	veri.soz_kategorisi = "eylemler"
end

pos_functions = function(args, veri)
	add_inflections(veri, args, 'ön adlar')
end

pos_functions = function(args, veri)
	-- the counter (classifier) parameter, only relevant for nouns
	local counter = args or ""

	if counter == "-" then
		table.insert(veri.cekimler, {etiket = "sayılamayan"})
	elseif counter ~= "" then
		table.insert(veri.cekimler, {etiket = "sayısı", counter})
	end
end

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	local poscat = frame.args or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
	local args = require('Modül:parameters').process(frame:getParent().args, {
		 = {list = true},
		 = {},  = {},
		 = {},
		 = {},
		 = {},  = {alias_of = 'cekim'},
		 = {},
		 = {},  = {},
		 = {},  = {},
		 = {},  = {alias_of = 'head'},
		 = {},  = {alias_of = 'sort'},
		 = {},
	})
	args = args or mw.title.getCurrentTitle().text

	local veri = {
		dil = lang,
		alf = sc,
		soz_kategorisi = poscat,
		kategoriler = {},
		alfabecevler = {},
		baslar = {},
		cekimler = {},
		sira_anahtari = nil,
		--custom info
		orta_bilgi = {},
		korunan_baslar = nil,
		kana = nil,
	}
	local katakana_category = {}

	-- sort out all the kanas and do the romanization business
	format_headword(args, veri, args or args)

	-- add certain "inflections" and categories for adjectives, verbs, or nouns
	if pos_functions then
		pos_functions(args, veri)
	end

	-- the presence of kyūjitai param indicates that this is shinjitai kanji entry and vice versa
	if args then
		if veri.soz_kategorisi == "suru verbs" then
			table.insert(veri.cekimler, {etiket = "]", " .. "]]]"})
		else
			table.insert(veri.cekimler, {etiket = "]", args})
		end
	end
	if args then
		table.insert(veri.cekimler, {etiket = "]"})
		if veri.soz_kategorisi == "suru verbs" then
			table.insert(veri.cekimler, {etiket = "]", " .. "]]]"})
		else
			table.insert(veri.cekimler, {etiket = "]", args})
		end
	end

	historical_kana(args, veri, poscat)

	-- categorize by joyo kanji and number of kanji
	categorize_by_kanji(veri, args)
	-- categorize by the script of the pagename or specific characters contained in it
	extra_categorization(veri, args, katakana_category)

	veri.sira_anahtari = args or veri.kana and m_ja.jsort(veri.kana) or nil

	return
		(veri.kana and '<span id="' .. veri.kana .. '"></span>' or '') ..
		require('Modül:başlık başı').tam_baslikbasi(veri)
			:gsub('<span class="gender">.-</span>', '<i>'..table.concat(veri.orta_bilgi, '&nbsp;')..'</i>') ..
		require("Modül:araçlar").format_categories(katakana_category, lang, veri.sira_anahtari and m_ja.hira_to_kata(veri.sira_anahtari))
end

return export