Module:ko-etym

From Wiktionary, the free dictionary
Jump to navigation Jump to search


local export = {}

local m_lang = require("Module:languages")

-- This module implements {{ko-etym-*}} (currently only {{ko-etym-native}}).

local refs = {
	{{"1", "hh"}, "''Hunminjeong'eum haerye'' ([[wikisource:ko:훈민정음#くんみんせいおとかいれい|{{lang|ko|くんみんせいおとかいれい / 훈민정음해례}}]]), 1446", "okm"},
	{{"2", "he"}, "''Hunminjeong'eum eonhae'' ([[wikisource:ko:훈민정음언해|{{lang|ko|くんみんせいおとことわざかいほん / 훈민정음언해본}}]]), 1446", "okm"},
	{{"3", "ss", "석보"}, "''Seokbo sangjeol'' ({{lang|ko|しゃくしょうぶし / 석보상절}}), 1447", "okm"},
	{{"4", "yb", "용가"}, "''Yongbi eocheon'ga'' ([[wikisource:ko:용비어천가|{{lang|ko|りゅうてん / 용비어천가}}]]), 1447", "okm"},
	{{"5", "wc"}, "''Worin cheon'gangjigok'' ([[wikisource:ko:월인천강지곡|{{lang|ko|つきしるし千江ちえこれきょく / 월인천강지곡}}]]), 1449", "okm"},
	{{"6", "sy"}, "''Seonjong yeonggajip eonhae'' ({{lang|ko|禪宗ぜんしゅうえいよしみしゅうことわざかい / 선종영가집언해}}), 1456", "okm"},
	{{"7", "ws", "wi", "월석"}, "''Worin seokbo'' ({{lang|ko|つきしるししゃく / 월인석보}}), 1459", "okm"},
	{{"8", "ne"}, "''Neung'eomgyeong eonhae'' ({{lang|ko|楞嚴けいことわざかい / 능엄경언해}}), 1461", "okm"},
	{{"9", "mb"}, "''Myobeomnyeonhwagyeong eonhae'' ({{lang|ko|妙法みょうほう蓮華れんげけいことわざかい / 묘법연화경언해}}), 1463", "okm"},
	{{"10", "wg"}, "''Won'gakgyeong eonhae'' ({{lang|ko|まどかさとしけいことわざかい / 원각경언해}}), 1465", "okm"},
	{{"11", "be"}, "''Beobeo eonhae'' ({{lang|ko|法語ほうごことわざかい / 법어언해}}), 1466", "okm"},
	{{"12", "nh"}, "''Eoje naehun'', ({{lang|ko|御製ぎょせい內訓 / 어제내훈}}), 1475 ", "okm"},
	{{"13", "gg"}, "''Gugeupbang eonhae'' ({{lang|ko|救急きゅうきゅうかたことわざかい / 구급방언해}}), 1466", "okm"},
	{{"14", "bdb"}, "''Bullyu dugongbu si eonhae'' ({{lang|ko|分類ぶんるいもりこうことわざかい / 분류두공부시언해}}), 1481", "okm"},
	{{"15", "nm"}, "''Nammyeongjip eonhae'' ({{lang|ko|南明なんめいしゅうことわざかい / 남명집언해}}), 1482", "okm"},
	{{"16", "br"}, "''Baengnyeon chohae'' ({{lang|ko|ひゃくれんしょうかい / 백련초해}}), mid-16th century", "okm"},
	{{"17", "bs"}, "''Beonyeok sohak'' ({{lang|ko|飜譯小學しょうがく / 번역소학}}), 1517", "okm"},
	{{"18", "bn"}, "''Beonyeok nogeoldae'' ({{lang|ko|飜譯ろう乞大 / 번역노걸대}}), 1517", "okm"},
	{{"19", "ir"}, "''Iryun haengsildo'' ({{lang|ko|りん行實ぎょうじつ / 이륜행실도}}), 1518 (Oksan Seowon ed.)", "okm"},
	{{"20", "hm"}, "''Hunmong jahoe'' ({{lang|ko|訓蒙くんもうかい / 훈몽자회}}), 1527", "okm"},
	{{"21", "gh"}, "''Guhwang chwaryo'' ({{lang|ko|救荒きゅうこう撮要さつよう / 구황촬요}}), 1554", "okm"},
	{{"22", "sj"}, "''Sinjeung yuhap'' ({{lang|ko|しんぞうるいあい / 신증유합}}), 1576", "okm"},
	{{"23", "se"}, "''Sohak eonhae'' ({{lang|ko|小學しょうがくことわざかい / 소학언해}}), 1586", "okm"},
	{{"24", "gci"}, "''Gyechuk ilgi'' ({{lang|ko|みずのとうし日記にっき / 계축일기}}), c. 1600 ", "ko-ear"},
	{{"25", "etj"}, "''Eonhae taesan jibyo'' ({{lang|ko|ことわざかい胎産しゅうよう / 언해태산집요}}), 1608", "ko-ear"},
	{{"26", "edj"}, "''Eonhae duchang jibyo'' ({{lang|ko|ことわざかい痘瘡とうそうしゅうよう / 언해두창집요}}), 1608", "ko-ear"},
	{{"27", "sge", "sgs"}, "''Seon'ga gwigam eonhae'' ({{lang|ko|禪家ぜんか龜鑑きかんことわざかい / 선가귀감언해}}), 1610 (Songgwangsa ed.)", "ko-ear"},
	{{"28", "mg"}, "''Magyeong chojip eonhae'' ({{lang|ko|うまけいしょうしゅうことわざかい / 마경초집언해}}), 16th century", "ko-ear"},
	{{"29", "erh"}, "''Eorokhae'' ({{lang|ko|語錄ごろくかい / 어록해}}), 1652", "ko-ear"},
	{{"30", "sgg"}, "''Sin'gan guhwang chwaryo'' ({{lang|ko|新刊しんかん救荒きゅうこう撮要さつよう / 신간구황촬요}}), 1660", "ko-ear"},
	{{"31", "pts"}, "''Bak Tongsa eonhae'' ({{lang|ko|ぼく通事つうじことわざかい / 박통사언해}}), 1677", "ko-ear"},
	{{"32", "yhy", "유해역"}, "''Yeogeo yuhae'' ({{lang|ko|譯語やくごるいかい / 역어유해}}), 1690", "ko-ear"},
	{{"33", "js"}, "''Jeongsok eonhae'' ({{lang|ko|せい俗諺ぞくげんかい / 정속언해}} (of {{lang|ko|はじめしゅう敎授きょうじゅほん / 이원주 교수본}})), 1518", "okm"},
	{{"34", "ys"}, "''Sinjeonjachwi yeomchobang eonhae'' ({{lang|ko|しんつて焰硝かたことわざかい / 신전자취염초방언해}}), 1635", "ko-ear"},
	{{"35", "sg"}, "''Samgang haengsildo'' ({{lang|ko|三綱さんこう行實ぎょうじつ / 삼강행실도}}), 1511", "okm"},
	{{"36", "boi"}, "''Bunmun onyeok ihaebang'' ({{lang|ko|ぶんもん瘟疫えき解方ときかた / 분문온역이해방}}), 1542", "okm"},
	{{"37", "yyb"}, "''Yeogeo yuhaebo'' ({{lang|ko|譯語やくごるいかい / 역어유해보}}), 1775", "ko-ear"},
	{{"38", "ggg"}, "''Geumganggyeong samgahae'' ({{lang|ko|きむつよしけいさんいえかい / 금강경삼가해}}), 1482", "okm"},
	{{"39", "du"}, "''Dong'ui bogam'' ({{lang|ko|ひがし寶鑑ほうかん / 동의보감}}), 1613", "ko-ear"},
	{{"40", "bo"}, "''Byeogon sinbang'' ({{lang|ko|辟瘟しんかた / 벽온신방}}), 1653", "ko-ear"},
	{{"41", "yhmb", "myb"}, "''Mong'eo yuhae bopyeon'' ({{lang|ko|こうむかたりるいかいへん / 몽어유해보편}}), 1790", "ko-ear"},
	{{"42", "dssh"}, "''Dongguk sinsok samgang haengsildo'' ({{lang|ko|東國とうごくしんぞく三綱さんこう行實ぎょうじつ / 동국신속삼강행실도}}), 1617", "ko-ear"},
	{{"43", "ge"}, "''Gyeongminpyeon eonhae'' ({{lang|ko|警民へんことわざかい / 경민편언해}}), 1658", "ko-ear"},
	{{"44", "ggb"}, "''Gugeupganibang eonhae'' ({{lang|ko|救急きゅうきゅう簡易かんいかたことわざかい / 구급간이방언해}}), 1489", "okm"},
	{{"45", "ag"}, "''Akhak gwebeom'' ({{lang|ko|らくがく軌範きはん / 악학궤범}}), 1493", "okm"},
	{{"46", "bj"}, "''Bang'eon jipseok'' ({{lang|ko|方言ほうげんしゅうしゃく / 방언집석}}), 1778", "ko-ear"},
	{{"47", "msg"}, "''Myeongseonggyeong eonhae'' ({{lang|ko|あきらせいけいことわざかい / 명성경언해}}), 1883", "ko-ear"},
	{{"48", "gy"}, "''Jīlín lèishì'' ({{lang|zh|にわとりりんるいごと}} / {{lang|ko|계림유사}}), 1103", "oko-lat"},
	{{"49", "ghw"}, "''Gukhan hoehwa'' ({{lang|ko|くにかん會話かいわ / 국한회화}}), 1895", "ko-ear"},
	{{"50", "mc"}, "''Magyeong chojip eonhae'' ({{lang|ko|うまけいしょうしゅうことわざかい / 마경초집언해}}), 1623~1649", "ko-ear"},
	{{"51", "nob"}, "''Nobakjimnam'' ({{lang|ko|ろうほお輯覽 / 노박집람}}), 1517", "okm"},
	{{"52", "cm"}, "''Cheophaemong'eo'' ({{lang|ko|としかいこうむ / 첩해몽어}}), 1790", "ko-ear"},
	{{"53", "bb"}, "''Beonyeok Bak Tongsa'' ({{lang|ko|飜譯ほお通事つうじ / 번역박통사}}), before 1517", "okm"},
	{{"54", "sus"}, "''Samun seonghwi'' ({{lang|ko|さんいんごえ彙 / 삼운성휘}}), 1751", "ko-ear"},
	{{"55", "dy"}, "''Dongmun yuhae'' ({{lang|ko|同文どうぶんるいかい / 동문유해}}), 1748", "ko-ear"},
	{{"56", "ng"}, "''Nogyega'' ({{lang|ko|けい / 노계가}}), 1636", "ko-ear"},
	{{"57", "jg"}, "''Joya gimun'' ({{lang|ko|朝野あさの記聞きぶん / 조야기문}}), 1684", "ko-ear"},
	{{"58", "ye"}, "''Yeosaseo eonhae'' ({{lang|ko|おんな四書ししょことわざかい / 여사서언해}}), 1736", "ko-ear"},
	{{"59", "jh"}, "''Joya hoetong'' ({{lang|ko|朝野ちょうやかいどおり / 조야회통}}), 18th century", "ko-ear"},
	{{"60", "ij"}, "''Imhwa jeong'yeon'' ({{lang|ko|はやしはなていのべ / 임화정연}}), 18th century", "ko-ear"},
	{{"61", "jgw"}, "''Joseon gwannyeogeo '' ({{lang|ko|朝鮮ちょうせんかんえき / 조선관역어}}), 1403~1424", "okm"},
	{{"62", "sc"}, "''Seokbong cheonjamun'' ({{lang|ko|いしほうせんぶん / 석봉천자문}}), 1583", "okm"},
	{{"63", "ns"}, "''Namsarok'' ({{lang|ko|みなみ槎錄 / 남사록}}), 1601", "ko-ear"},
	{{"64", "tj"}, "''Tamnaji'' ({{lang|ko|眈羅こころざし / 탐라지}}), 1653", "ko-ear"},
	{{"65", "me"}, "''Maengja eonhae'' ({{lang|ko|孟子もうこことわざかい / 맹자언해}}), 1590", "okm"},
	{{"66", "gre"}, "''Garye eonhae'' ({{lang|ko|いえれいことわざかい / 가례언해}}), 1632", "ko-ear"},
	{{"67", "tsg"}, "''Taesang gameungpyeondoseol eonhae'' ({{lang|ko|ふとしじょう感應かんおうへん圖說ずせつことわざかい / 태상감응편도설언해}}), 1852", "ko-ear"},
	{{"68", "chi"}, "''Childae manbeop'' ({{lang|ko|ななだいまんほう / 칠대만법}}), 1569", "okm"},
	{{"69", "gcj"}, "''Gwangju cheonjamun'' ({{lang|ko|光州こうしゅうせんぶん / 광주천자문}}), 1575", "okm"},
	{{"70", "hyg"}, "''Hyang'yak gugeupbang'' ({{lang|ko|鄕藥救急きゅうきゅうかた / 향약구급방}}), 1236", "oko-lat"},
	{{"71", "ny"}, "''Eonhae nabyak jeungchibang'' ({{lang|ko|ことわざかい臘藥しょうかた / 언해납약증치방}}), 17th century", "ko-ear"},
	{{"72", "csg"}, "''Cheonui sogam'' ({{lang|ko|闡義あきらかん / 천의소감}}), 1756", "ko-ear"},
	{{"73", "gge"}, "''Geumganggyeong eonhae'' ({{lang|ko|きむつよしけいことわざかい / 금강경언해}}), 1464", "okm"},
	{{"74", "hb"}, "''Hanbul jajeon'' ({{lang|ko|かんふつ字典じてん / 한불자전}}), 1880", "ko-ear"},
	{{"75", "bdbj"}, "''Bullyu dugongbu si eonhae junggan'' ({{lang|ko|分類ぶんるいもりこうことわざかいじゅう刊本かんぽん / 분류두공부시언해중간본}}), 1632", "ko-ear"},
	{{"76", "ms"}, "''Mongsanhwasang beobeo yangnok eonhae'' ({{lang|ko|こうむやま尙法りゃくろくことわざかい / 몽산화상법어약록언해}}), 1459~1467", "okm"},
	{{"77", "yhm", "my"}, "''Mong'eo yuhae'' ({{lang|ko|こうむかたりるいかい / 몽어유해}}), 1768", "ko-ear"},
	{{"78", "yj"}, "''Seonggwanjajaegusuyukja seonjeong eonhae'' ({{lang|ko|きよしかん自在じざいもとめおさむろく禪定ぜんじょうことわざかい / 성관자재구수육자선정언해}}), 1560", "okm"},
	{{"79", "gj"}, "''Gwang jaemulbo'' ({{lang|ko|こう才物さいぶつ / 광재물보}}), 19th century", "ko-ear"},
	{{"80", "sbe"}, "''Sabeobeo eonhae'' ({{lang|ko|よん法語ほうごことわざかい / 사법어언해}}), 1467", "okm"},
	{{"81", "sst"}, "''Saseongtonghae'' ({{lang|ko|四聲しせいどおりかい / 사성통해}}), 1517", "okm"},
}

local ref_table = {}

for _, ref in ipairs(refs) do
	local keys, text, langcode = unpack(ref)
	for _, key in ipairs(keys) do
		ref_table[key] = {text, langcode}
	end
end

-- Implementation of {{ko-etym-native}}.
-- [[The shorthand parameter for first attestations will be deprecated soon in favor of creating actual entries or
-- citation pages for Middle Korean. See discussion at [[Wiktionary:Beer parlour/2019/September#First attestations
-- in the etymology section]]. --May not be accurate any more. ([[User:Benwing2]], 2023-09-04)
function export.ko_etym_native(frame)
	local params = {
		[1] = {},
		["also"] = {type = "boolean"},
		[2] = {alias_of = "form"},
		["form"] = {},
		[3] = {alias_of = "yale"},
		["yale"] = {},
		[4] = {alias_of = "year"},
		["year"] = {},
		["hangul"] = {type = "boolean"},
		["dot"] = {default = "."},
		["nodot"] = {type = "boolean"},
		["nocat"] = {type = "boolean"},
		["nocap"] = {type = "boolean"},
	}
		
	local parargs = frame:getParent().args
	if parargs["dot"] == "" then
		require("Module:debug").track("ko-etym/ko-etym-native/empty-dot")
	end
	local args = require("Module:parameters").process(parargs, params)

	local parts = {}
	local categories = {}

	if not args[1] then
		table.insert(parts, "Of native Korean origin")
	else
		local text, langcode
		if ref_table[args[1]] then
			text, langcode = unpack(ref_table[args[1]])
			text = text:gsub("{{lang|([a-z]+)|(.-)}}", function(langtextcode, langtext)
				local lang = m_lang.getByCode(langtextcode, true)
				return require("Module:script utilities").tag_text(langtext, lang)
			end)
		else
			if not args.year then
				error("1='" .. args[1] .. "' is not a known reference work, so year= must be supplied")
			end
			text = args[1] .. ", " .. args.year
			if args.year:find("^[0-9]+$") then
				if tonumber(args.year) < 1300 then
					langcode = "oko-lat"
				elseif tonumber(args.year) < 1598 then
					langcode = "okm"
				else
					langcode = "ko-ear"
				end
			else
				langcode = "okm"
			end
		end
		local first
		if args.also then
			first = "Also"
		else
			first = "First"
		end
		if args.hangul then
			table.insert(parts, "In the [[hangul]] script, ")
			table.insert(parts, mw.getContentLanguage():lcfirst(first))
		else
			table.insert(parts, first)
		end
		table.insert(parts, " attested in the ")
		table.insert(parts, text)

		if args.form then
			table.insert(parts, ", as ")
			table.insert(parts, require("Module:etymology").format_inherited {
				lang = m_lang.getByCode("ko"),
				terminfo = {
					lang = m_lang.getByCode(langcode, true, "allow etym"),
					term = args.form,
					tr = "-",
					}
				}
			)
			if args.yale then
				table.insert(parts, "&nbsp;([[w:Yale romanization of Korean|Yale]]: ''")
				table.insert(parts, args.yale)
				table.insert(parts, "'')")
			end
		end
	end

	if not args.nodot then
		table.insert(parts, args.dot)
	end

	if not args.nocat then
		table.insert(categories, "Native Korean words")
	end

	local parts_concat = table.concat(parts)
	if args.nocap then
		parts_concat = mw.getContentLanguage():lcfirst(parts_concat)
	end
	
	return parts_concat .. require("Module:utilities").format_categories(categories, m_lang.getByCode("ko"))
end

return export