Modul:Nyelvkódszűrő

Ez a közzétett változat, ellenőrizve: 2023. november 29.

Nyelvkódszűrő[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

-- A MODUL FÜGGVÉNYEIT ÉS ADATAIT CSAK pl local valami = require('Modul:Nyelvkódszűrő)
-- MÓDON TUDJUK ELÉRNI. 
-- A CitWeb és családja számára készült el.

-- kell a nyelvkódok ellenőrzéséhez
--[[
NYELVKÓDSZŰRŐ:
Kiszűri a bemenetén kapott kétjegyű nyelvkódokból pl hu,de,it,fr,qq,qx a hibásakat
a) a helyes nyelvkódokból listát csinál (hu,de,it,fr,qq,qx) 
b) a hibás nyelvkódokból is listát csinál (qq,qx) és vörössel közli "hibás nyelvkód"
--]]

require('strict')

local ou = ''
local  popmax = 50
local oumarad = popmax

local function pop(...)    -- idézőjeles rész és bővítmények az ou számára
                           -- memóriatúllépést okozhat, csak teszteléshez
	local list = {...}
	oumarad = oumarad - 1 -- előre csökkentjük, így mindig a maradék lehetséges pop hívások számát mutatja
	if oumarad == 0 then return end -- hogy ne legyen memóriatúllépés
	for _, var in pairs(list) do
		ou = ou .. tostring(var) .. '\n '
		mw.log(ou)
	end
end

-- ISO NYELVKÓDOK

local lans = {
	["aa"] = "afarul",
	["ab"] = "abházul",
	["ae"] = "avesztaiul",
	["af"] = "afrikaansul",
	["ak"] = "akanul",
	["am"] = "amharaiul",
	["an"] = "aragóniaiul"  ,
	["ar"] = "arabul",
	["as"] = "asszámiul"   ,
	["av"] = "avarul" ,
	["ay"] = "ajmara" ,
	["az"] = "azeriül" ,
	["ba"] = "baskírul",
	["be"] = "belaruszul",
	["bg"] = "bolgárul",
	["bh"] = "bihári nyelveken ",
	["bi"] = "biszlamául",
	["bm"] = "bambarául",
	["bn"] = "bengáliul",
	["bo"] = "tibetiül",
	["br"] = "bretonul",
	["bs"] = "bosnyákul",
	["ca"] = "katalánul",
	["ce"] = "csecsenül",
	["ch"] = "csamorroul",
	["co"] = "korzikaiul",
	["cr"] = "kríul",
	["cs"] = "csehül",
	["cu"] = "óegyházi szlávul",
	["cv"] = "csuvasul",
	["cy"] = "walesiul",
	["da"] = "dánul",
	["de"] = "németül",
	["dv"] = "maldívul",
	["dz"] = "dzongkhául",
	["ee"] = "eveül",
	["el"] = "görögül",
	["en"] = "angolul",
	["eo"] = "eszperantóul",
	["es"] = "spanyolul",
	["et"] = "észtül",
	["eu"] = "baszkul",
	["fa"] = "perzsául",
	["ff"] = "fulul",
	["fi"] = "finnül",
	["fj"] = "fidzsiül",
	["fo"] = "feröeriül",
	["fr"] = "franciául",
	["fy"] = "frízül",
	["ga"] = "írül",
	["gd"] = "gélül",
	["gl"] = "galiciaiul",
	["gn"] = "guaraniul",
	["gu"] = "gudzsarátiul",
	["gv"] = "manxul",
	["ha"] = "hauszául",
	["he"] = "héberül",
	["hi"] = "hindiül",
	["ho"] = "hiri motuul",
	["hr"] = "horvátul",
	["ht"] = "haiti kreolul",
	["hu"] = "magyarul",
	["hy"] = "örményül",
	["hz"] = "hereroul",
	["ia"] = "interlingva nyelven",
	["id"] = "indonézül",
	["ie"] = "okcidentálul",
	["ig"] = "igbóul",
	["ii"] = "nuoszuul",
	["ik"] = "inupiakul",
	["io"] = "idoul",
	["is"] = "izlandiul",
	["it"] = "olaszul",
	["iu"] = "inuktitutul",
	["ja"] = "japánul",
	["jv"] = "jávaiul",
	["ka"] = "grúzul",
	["kg"] = "kikongoul",
	["ki"] = "kikujuul",
	["kj"] = "kvanyamául",
	["kk"] = "kazakul",
	["kl"] = "grönlandiul",
	["km"] = "khmerül",
	["kn"] = "kannadául",
	["ko"] = "koreaiul",
	["kr"] = "kanuriul",
	["ks"] = "kasmíriul",
	["ku"] = "kurdul",
	["kv"] = "komiul",
	["kw"] = "korniul",
	["ky"] = "kirgizül",
	["la"] = "latinul",
	["lb"] = "luxemburgiul",
	["lg"] = "lugandául",
	["li"] = "limburgiul",
	["ln"] = "lingalául",
	["lo"] = "laoul",
	["lt"] = "litvánul",
	["lu"] = "luba-katangául",
	["lv"] = "lettül",
	["mg"] = "malgasul",
	["mh"] = "Marshall-szigetekiül",
	["mi"] = "maoriul",
	["mk"] = "macedónul",
	["ml"] = "malajálamul",
	["mn"] = "mongolul",
	["mr"] = "maráthiul",
	["ms"] = "malájul",
	["mt"] = "máltaiul",
	["my"] = "burmaiul",
	["na"] = "nauruiul",
	["nb"] = "norvégul",
	["nd"] = "északi ndebeléül",
	["ne"] = "nepáliul",
	["ng"] = "ndongául",
	["nl"] = "hollandul",
	["nn"] = "nynorskul",
	["no"] = "norvégul",
	["nr"] = "déli ndebeléül",
	["nv"] = "navahóul",
	["ny"] = "nyandzsául",
	["oc"] = "okcitánul",
	["oj"] = "odzsibvául",
	["om"] = "oromóul",
	["or"] = "orijául",
	["os"] = "oszétül",
	["pa"] = "pandzsábiul",
	["pi"] = "páliul",
	["pl"] = "lengyelül",
	["ps"] = "pastuul",
	["pt"] = "portugálul",
	["qu"] = "kecsuául",
	["rm"] = "romansul",
	["rn"] = "rundiul",
	["ro"] = "románul",
	["ru"] = "oroszul",
	["rw"] = "kinyarvandául",
	["sa"] = "szanszkritül",
	["sc"] = "szardíniaiul",
	["sd"] = "szindhiul",
	["se"] = "északi számiul",
	["sg"] = "szangóul",
	["si"] = "szingalézül",
	["sk"] = "szlovákul",
	["sl"] = "szlovénul",
	["sm"] = "szamoaiul",
	["sn"] = "sonául",
	["so"] = "szomáliul",
	["sq"] = "albánul",
	["sr"] = "szerbül",
	["ss"] = "szváziul",
	["st"] = "szotoul",
	["su"] = "szundaiul",
	["sv"] = "svédul",
	["sw"] = "szuahéliül",
	["ta"] = "tamilul",
	["te"] = "teluguul",
	["tg"] = "tádzsikul",
	["th"] = "sziámiul",
	["ti"] = "tigrinyául",
	["tk"] = "türkménuül",
	["tl"] = "tagalogul",
	["tn"] = "csvanául",
	["to"] = "tongául",
	["tr"] = "törökül",
	["ts"] = "congául",
	["tt"] = "tatárul",
	["tw"] = "tviül",
	["ty"] = "tahitiül",
	["ug"] = "ujgurul",
	["uk"] = "ukránul",
	["ur"] = "urduul",
	["uz"] = "üzbégül",
	["ve"] = "vendául",
	["vi"] = "vietnámiul",
	["vo"] = "volapükül",
	["wa"] = "vallonul",
	["wo"] = "voloful",
	["xh"] = "xhoszául",
	["yi"] = "jiddisül",
	["yo"] = "jorubául",
	["za"] = "csuangul",
	["zh"] = "kínaiul",
	["zu"] = "zuluul",
}

local function nyelvszuro (lan) -- a lan string tipusú
	-- nyelv parameter kezelése
	local tagok = {}
	local s = lan

	s = string.gsub(s, "%s", ",") -- szóközöket vesszőre cserél
	s = string.gsub(s, "%.", ",") -- pontokat vesszőre cserél
	s = string.gsub(s, ",,+", ",") -- többszörös vesszőket egy vesszőre cserél
	s = string.gsub(s, '[%,]$', '') -- hogy csak a string belsejében legyen vessző
	s = string.gsub(s, '^[%,]', '') -- hogy csak a string belsejében legyen vessző
	lan = s  
	-- pop("lan=",lan)
	tagok = mw.text.split(lan, ',', true)
	--[[
	for i, tag in ipairs(tagok) do
		pop(tostring(i), tagok[i])
	end
	--]]


-- indul az -ul, -ül lista összeállítása

	local i
	local hikod = {}
	local hibak
	local outlan= {}
	if #tagok > 0 then
		for i = 1, #tagok  do
			if lans[tagok[i]]  then  -- fent van a listánkon
				-- pop('index=', tagok[i])
				table.insert(outlan, lans[tagok[i]])
			else
				table.insert(hikod, tagok[i])  -- nem csak 1 lehet
				-- pop("hikodhoz", tagok[i])
			end   --if lans[tagok[i]] 
		end  --icikl
		lan = "(".. table.concat(outlan,', ')..")"  -- lan itt már string egy vagy több elem benne vesszőkkel elválasztva            

		if #hikod > 0  then
			hibak = "(".. table.concat(hikod,', ')..")"
			-- pop("hibák=", hibak)
		end --#hicod > 0
	end -- if #tagok> 0
	-- pop('nyelvlista a végén = ', lan)
	return lan,hibak,ou -- azaz  nyelvlista + hibalista+ a nyomkövető	
end

-- csak a nyelvszuro függvény publikus a modulból
local q = {
	nyelvszuro = nyelvszuro,
}

return q