Ugrás a tartalomhoz

Modul:Homokozó/Pepo41/Nyelvkódszűrő

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

Homokozó/Pepo41/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áss nyelvkódokból is listát csinál (qq,qx) és vörössel közli "hibás nyelvkód"
--]]

require('Modul:No globals')

local hibavan = false
local hiba_jelzes = {}
local kategorizalas_van = false
local ou = ''
local oumax = 20 -- a tesztüzenetek számának maximuma
local oumarad = oumax
local nyl , hl, szoveg
local hibavan = false


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

local function error(about) -- hibajelzést szolgál
	-- Enclose errorMsg with <span>
	-- Precondition:
	--     about -- string
	hibavan = true
	local r = about
	if type(about) == 'string' then
		if #about == 0 then
			r = 'Lua-hiba'
		end
	else
	r = tostring(about)
	end
	return '<span class="error">' .. r .. '</span>, '
end -- error()

-- ISO NYELVKÓDOK

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

local function nyelvszuro (lan) -- a lan string tipusú

    -- nyelv parameter kezelése
	local tagok={}
	local i,j,szel	
	if lan then    
	local s = lan
	local count
        
	s = string.gsub( s , " " , ",")  -- szóközöket vesszőre cserél
	s = string.gsub( s , "%." , ",") -- pontokat vesszőre cserél
	
	repeat
	s,count = string.gsub( s , ",," , ",") 	-- többszörös vesszőket egy vesszőre cserél
    until count == 0 -- számlálja a cseréket 
	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)
    i, j = string.find(lan, ',')
	while i do
		-- pop("lan",lan)
        szel=string.sub(lan,1,i)
		szel=string.gsub(szel, '[%,]$', '') -- vesszü levägva
		-- pop("szelet", szel)
		table.insert(tagok,szel)
		lan=string.sub(lan,i+1,-1) 
		-- pop("lan maradeka",lan)
        i, j = string.find(lan, ',') 
	end -- while i 
	table.insert(tagok,lan) -- ne maradjon le az utólsó

	for i=1, #tagok do
        -- pop(tostring(i),tagok[i])
    end -- icikl   
	end -- if lan


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

	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