For faster navigation, this Iframe is preloading the Wikiwand page for Modulo:Lingvonomo.

Modulo:Lingvonomo

Dokumentado Dokumentado


Ŝablona programado Diskutoj Lua Testoj Subpaĝoj
Modulo Esperanto English

Modulo: Dokumentado


Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.)
-- modulo lingvonomo -- 2024-08-27
-- main functions:
-- language -- creates a link to a language article and an adverb like text
-- flag -- creates a flag and a link to a language article and an adverb like text
-- lang - creates a link to a language article and an adverb like text followed by a parsed ((Lang)) template.
-- exist -- returs true, if a code is a language code, else false
-- list -- returns a table with the ordered language codes and their rilated names in esperanto
--		   (partly translated only :-()

-- the functions "language" and "flag" have one needed parameter only
-- all functons have the optional parameters:
-- "koloro" (color), that defines the color of the text
-- "fono" (background), that defines the background color of the text
-- "grando" (size), that defines the size of the text
-- "pezo" (weight), that defines the font-weight

-- error handling:
-- factory
-- message
-- analyze
-- message2
-- analyze2

-- helping function:
-- getLanguages
-- getAccusative
-- getFlags
-- template
-- image
-- testweight

local messagePrefix = "lua-module-Lingvonomo-"
local l10nDef = {}
l10nDef[ "en" ] = {
	noLanguage	= "Error in language - in the function",
	emptyLanguage = "Language is empty - in the function",
	noText		= "Error in the text - in the function",
	emptyText	 = "Text is empty - in the function",
	noFlag		= "The page [[Modulo:Lingvonomo/listo/flagoj]] doesnt have a suitable flag."
}
l10nDef[ "de" ] = {
	noLanguage	= "Fehler bei Sprache - in der Funktion",
	emptyLanguage = "Sprache ist leer - in der Funktion",
	noText		= "Fehler im Text - in der Funktion",
	emptyText	 = "Text ist leer - in der Funktion",
	noFlag		= "Auf der Seite [[Modulo:Lingvonomo/listo/flagoj]] gibt es keine geeignete Fahne."
}
l10nDef[ "eo" ] = {
	noLanguage	= "Eraro en la lingvo - en la funkcio",
	emptyLanguage = "Lingvo estas malplena - en la funkcio",
	noText		= "Eraro en la teksto - en la funkcio",
	emptyText	 = "Teksto estas malplena - en la funkcio",
	noFlag		= "La paĝo [[Modulo:Lingvonomo/listo/flagoj]] ne enhavas taŭgan flagon."
}

-- error handling
local function factory( say )
	-- Retrieve localized message string in content language
	-- Precondition:
	--	 say  -- string; message ID
	-- Postcondition:
	--	 Return some message string
	-- Uses:
	--	 >  messagePrefix
	--	 >  l10nDef
	--	 mw.language.getContentLanguage()
	--	 mw.message.new()
	local c = mw.language.getContentLanguage():getCode()
	local m = mw.message.new( messagePrefix .. say )
	local r = false
	if m:isBlank() then
		local l10n = l10nDef[ c ]
		if not l10n then
			l10n = l10nDef[ "en" ]
		end
		r = l10n[ say ]
	else
		m:inLanguage( c )
		r = m:plain()
	end
	if not r then
		r = "(((".. say .. ")))"
	end
	return r
end -- factory()

-- for one needed parameter only
local function message (first, f)
	-- first - the first required parameter in the main function is wrong
	-- f - in which function it occurs
	 local r = ""
	 if (first ~="") then
		 r = factory (first) .. ": " .. f .. "()"
	 end

	-- error (r, 0)
	 r = "<span class='error'>" .. r .. "</span>"
	 return r
end -- message ()

local function analyze (first, f)
	-- first - the first required parameter has to be analyzed
	-- f - in which function it occurs
	-- r - message text
		local r =""
		if (first ==nil) or (first =="") then
		   local param1 =""
		   local r =""
		   if (first == nil) then
			  param1= "noLanguage"
		   end
		   if (first=="") then
			  param1= "emptyLanguage"
		   end

		   r=message (param1, f)
		   return r
		end

	return r
end  -- analyze ()

-- for two needed parameters
local function message2 (first, second, f)
	-- first - the first required parameter in the main function is wrong
	-- second - the second required parameter in the main function is wrong
	-- f - in which function it occurs
	 local r = ""
	 if (first ~="") then
		 r = factory (first) .. ": " .. f .. "()"
	 end
	 if (second ~="") then
		 if (r ~="") then
		 r = r .. "<br />" .. factory (second) .. ": " .. f .. "()"
		 else r = factory (second) .. ": " .. f .. "()"
		 end
	 end
	-- error (r, 0)
	 r = "<span class='error'>" .. r .. "</span>"
	 return r
end -- message2 ()

local function analyze2 (first, second, f)
	-- first - the first required parameter has to be analyzed
	-- second - the second required parameter has to be analyzed
	-- f - in which function it occurs
	-- r - message text
		local r =""
		if (first ==nil) or (first =="") or (second ==nil) or (second=="") then
		   local param1 =""
		   local param2 =""
		   local r =""
		   if (first == nil) then
			  param1= "noLanguage"
		   end
		   if (first=="") then
			  param1= "emptyLanguage"
		   end
		   if (second == nil)  then
			  param2 ="noText"
		   end
		   if (second=="") then
			  param2 ="emptyText"
		   end
		   r=message2 (param1, param2, f)
		   return r
		end
--		local lenfirst=mw.ustring.len(first)
  --	  local lensecond=mw.ustring.len(second)
		-- if the first (language) is longer than the second (text), then it returns a text, which
		-- in the main function exchanges the values of the variables
--		if (lenfirst>lensecond) then
--			r="change"
--			return r
--		end
	return r
end  -- analyze2 ()

-- gets the adverb and name according to a language code using mw.language.fetchLanguageName
local function getLanguages(s)
	-- Gets an adverb and name using the Lua function mw.language.fetchLanguageName.
	local r1, r2
	if s == "ady" then
		r1, r2 = "adigee", "adigea lingvo"
	elseif s == "aib" then
		r1, r2 = "ejnue", "ejnua lingvo"
	elseif s == "ale" then
		r1, r2 = "aleute", "aleuta lingvo"
	elseif s == "an" then
		r1, r2 = "aragone", "aragona lingvo"
	elseif s == "ang" then
--		r1, r2 = "malnov-angle", "malnov-angla lingvo"		
		r1, r2 = "anglosakse", "anglosaksa lingvo"
	elseif s == "arc" then
		r1, r2 = "aramee", "aramea lingvo"
	elseif s == "ast" then
		r1, r2 = "asture", "astura lingvo"
	elseif s == "av" then
		r1, r2 = "avare", "avara lingvo"
	elseif s == "bal" then
		r1, r2 = "baluĉe", "baluĉa lingvo"
	elseif s == "bar" then
		r1, r2 = "bavare", "bavara lingvo"
	-- ie en la Vikio estas fuŝa ĉikaze maltaŭga traduko
	elseif s == "be-tarask" then
		r1, r2 = "beloruse (Taraŝkevica)", "belorusa lingvo (Taraŝkevica)"
	elseif s == "bi" then
		r1, r2 = "bislame", "bislama lingvo"		
	elseif s == "bs" then
		r1, r2 = "bosne", "bosna lingvo"
	elseif s == "bua" then
		r1, r2 = "burjate", "burjata lingvo"		
	elseif s == "my" then
		r1,r2 = "birme", "birma lingvo"
	elseif s == "ce" then
		r1, r2 = "ĉeĉene", "ĉeĉena lingvo"		
	elseif s == "ceb" then
		r1, r2 = "cebue", "cebuo"
	elseif s == "ch" then
		r1, r2 = "ĉamore", "ĉamora lingvo"
	elseif s == "chg" then
		r1, r2 = "ĉagataje", "ĉagataja lingvo"
	elseif s == "chm" then
		r1, r2 = "marie", "maria lingvo"		
	elseif s == "ckt" then
		r1, r2 = "ĉukĉe", "ĉukĉa lingvo"
	elseif s == "cnr" then
		r1, r2 = "montenegre", "montenegra lingvo"	
	elseif s == "cop" then
		r1, r2 = "kopte", "kopta lingvo"		
	elseif s == "crh" then
		r1, r2 = "krime-tatare", "krime-tatara lingvo"
	elseif s == "csb" then
		r1, r2 = "kaŝube", "kaŝuba lingvo"
	elseif s == "cv" then
		r1, r2 = "ĉuvaŝe", "ĉuvaŝa lingvo"
	elseif s == "din" then
		r1, r2 = "dinke", "dinka lingvo"		
	elseif s == "dz" then
		r1, r2 = "dzonke", "dzonka lingvo"
	elseif s == "egy" then
		r1, r2 = "egipte", "egipta lingvo"
	elseif s == "ell" then
		r1, r2 = "novgreke", "novgreka lingvo"
	elseif s == "eo" then
		r1, r2 = "esperante", "Esperanto"
	elseif s == "ett" then
		r1, r2 = "etruske", "etruska lingvo"
	elseif s == "evn" then
		r1, r2 = "evenke", "evenka lingvo"		
	elseif s == "fa" then
		r1, r2 = "perse", "persa lingvo"	
	elseif s == "ff" then
		r1, r2 = "fulane", "fulana lingvo"			
	elseif s == "fit" then
		r1, r2 = "tornival-finne", "tornival-finna lingvo"		
	elseif s == "fon" then
		r1, r2 = "fonue", "fonua lingvo"
	elseif s == "frp" then
		r1, r2 = "arpitane", "arpitana lingvo"		
	elseif s == "frr" then
		r1, r2 = "nordfrise", "nordfrisa lingvo"
	elseif s == "fur" then
		r1, r2 = "friule", "friula lingvo"		
	elseif s == "fy" then
		r1, r2 = "okcidentfrise", "okcidentfrisa lingvo"
	elseif s == "gag" then
		r1, r2 = "gagauze", "gagauza lingvo"		
	elseif s == "gd" then
		r1, r2 = "skotgaele", "skotgaela lingvo"
	elseif s == "gil" then
		r1, r2 = "kiribate", "kiribata lingvo"
	elseif s == "grc" then
		r1, r2 = "antikve-greke", "antikva greka lingvo"
	elseif s == "gsw-FR" or s == "gsw-fr" then
		r1, r2 = "alzace", "alzaca lingvo"		
	elseif s == "gv" then
		r1, r2 = "mankse", "manksa lingvo"
	elseif s == "hi" then
		r1, r2 = "hindie", "hindia lingvo"
	elseif s == "hit" then
		r1, r2 = "hitite", "hitita lingvo"		
	elseif s == "hsb" then
		r1, r2 = "suprasorabe", "suprasoraba lingvo"
	elseif s == "ik" then
		r1, r2 = "inupiake", "inupiaka lingvo"		
	elseif s == "inh" then
		r1, r2 = "inguŝe", "inguŝa lingvo"
	elseif s == "io" then
		r1, r2 = "ide", "ido (lingvo)"
	elseif s == "iu" then
		r1, r2 = "inuktitute", "inuktituta lingvo"		
	elseif s == "jbo" then
		r1, r2 = "loĵbane", "loĵbano"
	elseif s == "kaa" then
		r1, r2 = "karakalpake", "karakalpaka lingvo"
	elseif s == "kab" then
		r1, r2 = "kabile", "kabila lingvo"		
	elseif s == "kbd" then
		r1, r2 = "kabarde", "kabarda lingvo"		
	elseif s == "kg" then
		r1, r2 = "konge", "konga lingvo"
	elseif s == "kjh" then
		r1, r2 = "ĥakase", "ĥakasa lingvo"
	elseif s == "ko-kp" then
		r1, r2 = "nordkoree", "korea lingvo"		
	elseif s == "ko-kr" then
		r1, r2 = "sudkoree", "korea lingvo"	
	elseif s == "krc" then
		r1, r2 = "balkare", "karaĉaja-balkara lingvo"	
	elseif s == "krl" then
		r1, r2 = "karele", "karela lingvo"			
	elseif s == "ksh" then
		r1, r2 = "kolonje", "kolonja lingvo"
	elseif s == "kv" then
		r1, r2 = "komie", "komia lingvo"		
	elseif s == "kw" then
		r1, r2 = "kornvale", "kornvala lingvo"
	elseif s == "kyh" then
		r1, r2 = "karuke", "karuka lingvo"		
	elseif s == "la" then
		r1, r2 = "latine", "Latino"
	elseif s == "lbe" then
		r1, r2 = "lake", "laka lingvo"
	elseif s == "lez" then
		r1, r2 = "lezge", "lezga lingvo"
	elseif s == "lld" then
		r1, r2 = "ladine", "ladina lingvo"
	elseif s == "lmo" then
		r1, r2 = "lombarde", "lombarda lingvo"		
	elseif s == "lua" then
		r1, r2 = "lube", "luba lingvo"
	elseif s == "mdf" then
		r1, r2 = "mokŝe", "mokŝa lingvo"		
	elseif s == "mhr" then
		r1, r2 = "herbej-marie", "herbeja maria lingvo"		
	elseif s == "mic" then
		r1, r2 = "mikmake", "mikmaka lingvo"
	elseif s == "ml" then
		r1, r2 = "malajale", "malajala lingvo"		
	elseif s == "mnc" then
		r1, r2 = "manĉure", "manĉura lingvo"
	elseif s == "mni" then
		r1, r2 = "manipure", "manipura lingvo"
	elseif s == "mos" then
		r1, r2 = "mosie", "mosia lingvo"
	elseif s == "mrj" then
		r1, r2 = "montar-marie", "montara maria lingvo"	
	elseif s == "myv" then
		r1, r2 = "erzje", "erzja lingvo"
	elseif s == "nah" then
		r1, r2 = "naŭatle", "naŭatla lingvo"		
	elseif s == "nb" then
		r1, r2 = "bukmole", "bukmola lingvo"
	elseif s == "non" then
		r1, r2 = "norene", "norena lingvo"
	elseif s == "nr" then
		r1, r2 = "sud-ndebele", "sud-ndebela lingvo"
	elseif s == "nso" then
		r1, r2 = "pede", "peda lingvo"
	elseif s == "os" then
		r1, r2 = "osete", "oseta lingvo"
	elseif s == "ota" then
		r1, r2 = "osmanid-turke", "osmanida turka lingvo"		
	elseif s == "pag" then
		r1, r2 = "pangasine", "pangasina lingvo"
	elseif s == "pap" then
		r1, r2 = "papiamente", "Papiamento"
	elseif s == "pdc" then
		r1, r2 = "pensilvanigermane", "pensilvanigermana dialekto"		
	elseif s == "pi" then
		r1, r2 = "palie", "palia lingvo"
	elseif s == "pms" then
		r1, r2 = "piemonte", "piemonta lingvo"
	elseif s == "ps" then
		r1, r2 = "paŝtune", "paŝtuna lingvo"
	elseif s == "pt-br" then
		r1, r2 = "brazilportugale", "Brazila portugala"		
	-- eble korektenda post alinomado	
	elseif s == "rom"	then 
		r1, r2 = "cigane", "cigana lingvo"
	elseif s == "rue" then
		r1, r2 = "rusine", "rusina lingvo"		
	elseif s == "rup" then
		r1, r2 = "arumane", "arumana lingvo"
	elseif s == "sa" or s == "san" then
		r1, r2 = "sanskrite", "sanskrito"
	elseif s == "sah" then
		r1, r2 = "jakute", "jakuta lingvo"
	elseif s == "sc" then
		r1, r2 = "sarde", "sarda lingvo"		
	elseif s == "scn" then
		r1, r2 = "sicilie", "sicilia lingvo"		
	elseif s == "sco" then
		r1, r2 = "skote", "skota lingvo"
	elseif s == "se" then
		r1, r2 = "nord-samee", "nord-samea lingvo"
	elseif s == "sli" then
		r1, r2 = "silezia-germane", "silezia-germana lingvo"		
	elseif s == "slo" then
		r1, r2 = "interslave", "interslava lingvo"
	elseif s == "sju" then
		r1, r2 = "ume-samee", "ume-samea lingvo"		
	elseif s == "sma" then
		r1, r2 = "sud-samee", "sud-samea lingvo"			
	elseif s == "smj" then
		r1, r2 = "lule-samee", "lule-samea lingvo"			
	elseif s == "smn" then
		r1, r2 = "anar-samee", "anar-samea lingvo"		
	elseif s == "sms" then
		r1, r2 = "skolt-samee", "skolt-samea lingvo"
	elseif s == "sqt" then
		r1, r2 = "sokotrie", "sokotria lingvo"		
	elseif s == "stq" then
		r1, r2 = "saterfrise", "saterfrisa lingvo"
	elseif s == "sty" then
		r1, r2 = "siberitatare", "siberitatara lingvo"		
	elseif s == "sux" then
		r1, r2 = "sumere", "sumera lingvo"		
	elseif s == "sw" then
		r1, r2 = "svahile", "svahila lingvo"
	elseif s == "szl" then
		r1, r2 = "silezia-pole", "silezia-pola lingvo"
	elseif s == "tet" then
		r1, r2 = "tetune", "tetuna lingvo"
	elseif s == "tlh" then
		r1, r2 = "klingone", "klingona lingvo"
	elseif s == "tli" then
		r1, r2 = "tlingite", "tlingita lingvo"	
	elseif s == "tok" then
		r1, r2 = "tokipone", "Tokipono"
	elseif s == "tpi" then
		r1, r2 = "tokpisine", "Tokpisino"
	elseif s == "ty" then
		r1, r2 = "tahitie", "tahitia lingvo"		
	elseif s == "tyv" then
		r1, r2 = "tuve", "tuva lingvo"
	elseif s == "tzl" then
		r1, r2 = "talose", "talosa lingvo"
	elseif s == "uby" then
		r1, r2 = "ubiĥe", "ubiĥa lingvo"		
	elseif s == "udm" then
		r1, r2 = "udmurte", "udmurta lingvo"
	elseif s == "ur" then
		r1, r2 = "urdue", "Urduo"
	elseif s == "vec" then
		r1, r2 = "venecie", "venecia lingvo"		
	elseif s == "vo" then
		r1, r2 = "volapuke", "Volapuko"
	elseif s == "vot" then
		r1, r2 = "vote", "vota lingvo"		
	elseif s == "wa" then
		r1, r2 = "valone", "valona lingvo"
	elseif s == "wen" then
		r1, r2 = "sorabe", "soraba lingvo"		
	elseif s == "xal" then
		r1, r2 = "kalmuke", "kalmuka lingvo"
	elseif s == "xcu" then
		r1, r2 = "kurone", "kurona lingvo"		
	elseif s == "xh" then
		r1, r2 = "kose", "kosa lingvo"
	elseif s == "xpu" then
		r1, r2 = "punike", "punika lingvo"			
	elseif s == "xvn" then
		r1, r2 = "vandale", "vandala lingvo"
	elseif s == "yur" then
		r1, r2 = "juroke", "juroka lingvo"		
	else
		r1 = mw.language.fetchLanguageName( s, "eo" )
		if r1 then
			r1 = r1:gsub( "a$", "e")
			r2 = r1:gsub( "e$", "a lingvo" )
		end
	end
	return r1, r2
end

-- gets the accusative and name according to a language code using mw.language.fetchLanguageName
local function getAccusative(s)
	-- Gets an accusative and name using the Lua function mw.language.fetchLanguageName.
	local r1, r2
	if s == "ady" then
		r1, r2 = "adigean lingvon", "adigea lingvo"
	elseif s == "aib" then
		r1, r2 = "ejnuan lingvon", "ejnua lingvo"
	elseif s == "ale" then
		r1, r2 = "aleutan lingvon", "aleuta lingvo"		
	elseif s == "ang" then
--		r1, r2 = "malnov-anglan lingvon", "malnov-angla lingvo"		
		r1, r2 = "anglosaksan lingvon", "anglosaksa lingvo"
	elseif s == "arc" then
		r1, r2 = "aramean lingvon", "aramea lingvo"
	elseif s == "ast" then
		r1, r2 = "asturan lingvon", "astura lingvo"
	elseif s == "av" then
		r1, r2 = "avaran lingvon", "avara lingvo"
	elseif s == "bal" then
		r1, r2 = "baluĉan lingvon", "baluĉa lingvo"
	-- ie en la Vikio estas fuŝa ĉikaze maltaŭga traduko
	elseif s == "bi" then
		r1, r2 = "bislaman lingvon", "bislama lingvo"		
	elseif s == "bar" then
		r1, r2 = "bavaran lingvon", "bavara lingvo"
	elseif s == "be-tarask" then
		r1, r2 = "belorusan lingvon (Taraŝkevican)", "belorusa lingvo (Taraŝkevica)"
	elseif s == "bs" then
		r1, r2 = "bosnan lingvon", "bosna lingvo"
	elseif s == "bua" then
		r1, r2 = "burjatan lingvon", "burjata lingvo"		
	elseif s == "my" then
		r1, r2 = "birman lingvon", "birma lingvo"
	elseif s == "ce" then
		r1, r2 = "ĉeĉenan lingvon", "ĉeĉena lingvo"		
	elseif s == "ceb" then
		r1, r2 = "Cebuon", "cebua lingvo"
	elseif s == "ch" then
		r1, r2 = "ĉamoran lingvon", "ĉamora lingvo"
	elseif s == "chg" then
		r1, r2 = "ĉagatajan lingvon", "ĉagataja lingvo"
	elseif s == "chm" then
		r1, r2 = "marian lingvon", "maria lingvo"		
	elseif s == "ckt" then
		r1, r2 = "ĉukĉan lingvon", "ĉukĉa lingvo"
	elseif s == "cnr" then
		r1, r2 = "montenegran lingvon", "montenegra lingvo"	
	elseif s == "cop" then
		r1, r2 = "koptan lingvon", "kopta lingvo"		
	elseif s == "crh" then
		r1, r2 = "krime-tataran lingvon", "krime-tatara lingvo"
	elseif s == "csb" then
		r1, r2 = "kaŝuban lingvon", "kaŝuba lingvo"
	elseif s == "cv" then
		r1, r2 = "ĉuvaŝan lingvon", "ĉuvaŝa lingvo"
	elseif s == "din" then
		r1, r2 = "dinkan lingvon", "dinka lingvo"		
	elseif s == "dz" then
		r1, r2 = "dzonkan lingvon", "dzonka lingvo"
	elseif s == "egy" then
		r1, r2 = "egiptan lingvon", "egipta lingvo"
	elseif s == "ell" then
		r1, r2 = "novgrekan lingvon", "novgreka lingvo"
	elseif s == "eo" then
		r1, r2 = "Esperanton", "Esperanto"
	elseif s == "ett" then
		r1, r2 = "etruskan lingvon", "etruska lingvo"
	elseif s == "evn" then
		r1, r2 = "evenkan lingvon", "evenka lingvo"		
	elseif s == "ff" then
		r1, r2 = "fulanan lingvon", "fulana lingvo"			
	elseif s == "fit" then
		r1, r2 = "tornival-finnan lingvon", "tornival-finna lingvo"			
	elseif s == "fon" then
		r1, r2 = "fonuan lingvon", "fonua lingvo"
	elseif s == "frp" then
		r1, r2 = "arpitanan lingvon", "arpitana lingvo"		
	elseif s == "frr" then
		r1, r2 = "nordfrisan lingvon", "nordfrisa lingvo"
	elseif s == "fur" then
		r1, r2 = "friulan lingvon", "friula lingvo"		
	elseif s == "fy" then
		r1, r2 = "okcidentfrisan lingvon", "okcidentfrisa lingvo"
	elseif s == "gag" then
		r1, r2 = "gagauzan lingvon", "gagauza lingvo"		
	elseif s == "gd" then
		r1, r2 = "skotgaelan lingvon", "skotgaela lingvo"
	elseif s == "gil" then
		r1, r2 = "kiribatan lingvon", "kiribata lingvo"
	elseif s == "grc" then
		r1, r2 = "antikvan grekan lingvon", "antikva greka lingvo"
	elseif s == "gsw-FR" or s == "gsw-fr" then
		r1, r2 = "alzacan lingvon", "alzaca lingvo"		
	elseif s == "gv" then
		r1, r2 = "manksan lingvon", "manksa lingvo"
	elseif s == "hi" then
		r1, r2 = "hindian lingvon", "hindia lingvo"
	elseif s == "hit" then
		r1, r2 = "hititan lingvon", "hitita lingvo"		
	elseif s == "hsb" then
		r1, r2 = "suprasoraban lingvon", "suprasoraba lingvo"
	elseif s == "ik" then
		r1, r2 = "inupiakan lingvon", "inupiaka lingvo"		
	elseif s == "inh" then
		r1, r2 = "inguŝan lingvon", "inguŝa lingvo"
	elseif s == "io" then
		r1, r2 = "Idon", "Ido (lingvo)"
	elseif s == "iu" then
		r1, r2 = "inuktitutan lingvon", "inuktituta lingvo"		
	elseif s == "jbo" then
		r1, r2 = "Loĵbanon", "Loĵbano"
	elseif s == "kaa" then
		r1, r2 = "karakalpakan lingvon", "karakalpaka lingvo"
	elseif s == "kab" then
		r1, r2 = "kabilan lingvon", "kabila lingvo"		
	elseif s == "kbd" then
		r1, r2 = "kabardan lingvon", "kabarda lingvo"		
	elseif s == "kg" then
		r1, r2 = "kongan lingvon", "konga lingvo"
	elseif s == "kjh" then
		r1, r2 = "ĥakasan lingvon", "ĥakasa lingvo"
	elseif s == "ko-kp" then
		r1, r2 = "nordkorean lingvon", "korea lingvo"		
	elseif s == "ko-kr" then
		r1, r2 = "sudkorean lingvon", "korea lingvo"
	elseif s == "krc" then
		r1, r2 = "balkaran lingvon", "karaĉaja-balkara lingvo"
	elseif s == "krl" then
		r1, r2 = "karelan lingvon", "karela lingvo"		
	elseif s == "ksh" then
		r1, r2 = "kolonjan lingvon", "kolonja lingvo"
	elseif s == "kv" then
		r1, r2 = "komian lingvon", "komia lingvo"		
	elseif s == "kw" then
		r1, r2 = "kornvalan lingvon", "kornvala lingvo"
	elseif s == "kyh" then
		r1, r2 = "karukan lingvon", "karuka lingvo"		
	elseif s == "la" then
		r1, r2 = "Latinon", "Latino"
	elseif s == "lbe" then
		r1, r2 = "lakan lingvon", "laka lingvo"
	elseif s == "lez" then
		r1, r2 = "lezgan lingvon", "lezga lingvo"
	elseif s == "lld" then
		r1, r2 = "ladinan lingvon", "ladina lingvo"
	elseif s == "lmo" then
		r1, r2 = "lombardan lingvon", "lombarda lingvo"		
	elseif s == "lua" then
		r1, r2 = "luban lingvon", "luba lingvo"
	elseif s == "mdf" then
		r1, r2 = "mokŝan lingvon", "mokŝa lingvo"		
	elseif s == "mhr" then
		r1, r2 = "herbejan marian lingvon", "herbeja maria lingvo"		
	elseif s == "mic" then
		r1, r2 = "mikmakan lingvon", "mikmaka lingvo"
	elseif s == "ml" then
		r1, r2 = "malajalan lingvon", "malajala lingvo"		
	elseif s == "mnc" then
		r1, r2 = "manĉuran lingvon", "manĉura lingvo"
	elseif s == "mni" then
		r1, r2 = "manipuran lingvon", "manipura lingvo"
	elseif s == "mos" then
		r1, r2 = "mosian lingvon", "mosia lingvo"
	elseif s == "mrj" then
		r1, r2 = "montaran marian lingvon", "montara maria lingvo"	
	elseif s == "myv" then
		r1, r2 = "erzjan lingvon", "erzja lingvo"	
	elseif s == "nah" then
		r1, r2 = "naŭatlan lingvon", "naŭatla lingvo"		
	elseif s == "nb" then
		r1, r2 = "bukmolan lingvon", "bukmola lingvo"
	elseif s == "non" then
		r1, r2 = "norenan lingvon", "norena lingvo"
	elseif s == "nr" then
		r1, r2 = "sud-ndebelan lingvon", "sud-ndebela lingvo"
	elseif s == "nso" then
		r1, r2 = "pedan lingvon", "peda lingvo"
	elseif s == "os" then
		r1, r2 = "osetan lingvon", "oseta lingvo"
	elseif s == "ota" then
		r1, r2 = "osmanidan turkan lingvon", "osmanida turka lingvo"		
	elseif s == "pag" then
		r1, r2 = "pangasinan lingvon", "pangasina lingvo"
	elseif s == "pap" then
		r1, r2 = "Papiamenton", "Papiamento"
	elseif s == "pdc" then
		r1, r2 = "pensilvanigermanan dialekton", "pensilvanigermana dialekto"		
	elseif s == "pi" then
		r1, r2 = "palian lingvon", "palia lingvo"
	elseif s == "pms" then
		r1, r2 = "piemontan lingvon", "piemonta lingvo"
	elseif s == "ps" then
		r1, r2 = "paŝtunan lingvon", "paŝtuna lingvo"
	elseif s == "pt-br" then
		r1, r2 = "brazilan portugalan lingvon", "Brazila portugala"		
	-- eble korektenda post alinomado	
	elseif s == "rom"	then 
		r1, r2 = "ciganan lingvon", "cigana lingvo"
	elseif s == "rue" then
		r1, r2 = "rusinan lingvon", "rusina lingvo"		
	elseif s == "rup" then
		r1, r2 = "arumanan lingvon", "arumana lingvo"
	elseif s == "sa" or s == "san" then
		r1, r2 = "Sanskriton", "sanskrito"
	elseif s == "sah" then
		r1, r2 = "jakutan lingvon", "jakuta lingvo"
	elseif s == "sc" then
		r1, r2 = "sardan lingvon", "sarda lingvo"		
	elseif s == "scn" then
		r1, r2 = "sicilian lingvon", "sicilia lingvo"		
	elseif s == "sco" then
		r1, r2 = "skotan lingvon", "skota lingvo"
	elseif s == "se" then
		r1, r2 = "nordsamean lingvon", "nordsamea lingvo"
	elseif s == "sli" then
		r1, r2 = "silezia-germanan lingvon", "sSilezia-germana lingvo"		
	elseif s == "slo" then
		r1, r2 = "slovianskan lingvon", "slovianska lingvo"
	elseif s == "sju" then
		r1, r2 = "ume-samean lingvon", "ume-samea lingvo"		
	elseif s == "sma" then
		r1, r2 = "sud-samean lingvon", "sud-samea lingvo"			
	elseif s == "smj" then
		r1, r2 = "lule-samean lingvon", "lule-samea lingvo"			
	elseif s == "smn" then
		r1, r2 = "anar-samean lingvon", "anar-samea lingvo"		
	elseif s == "sms" then
		r1, r2 = "skolt-samean lingvon", "skolt-samea lingvo"	
	elseif s == "sqt" then
		r1, r2 = "sokotrian lingvon", "sokotria lingvo"		
	elseif s == "stq" then
		r1, r2 = "saterfrisan lingvon", "saterfrisa lingvo"
	elseif s == "sty" then
		r1, r2 = "siberitataran lingvon", "siberitatara lingvo"		
	elseif s == "sux" then
		r1, r2 = "sumeran lingvon", "sumera lingvo"		
	elseif s == "sw" then
		r1, r2 = "svahilan lingvon", "svahila lingvo"
	elseif s == "szl" then
		r1, r2 = "silezia-polan lingvon", "silezia-pola lingvo"
	elseif s == "tet" then
		r1, r2 = "tetunan lingvon", "tetuna lingvo"
	elseif s == "tlh" then
		r1, r2 = "klingonan lingvon", "klingona lingvo"
	elseif s == "tli" then
		r1, r2 = "tlingitan lingvon", "tlingita lingvo"		
	elseif s == "tok" then
		r1, r2 = "Tokiponon", "Tokipono"
	elseif s == "tpi" then
		r1, r2 = "Tokpisinon", "Tokpisino"
	elseif s == "ty" then
		r1, r2 = "tahitian lingvon", "tahitia lingvo"		
	elseif s == "tyv" then
		r1, r2 = "tuvan lingvon", "tuva lingvo"
	elseif s == "tzl" then
		r1, r2 = "talosan lingvon", "talosa lingvo"
	elseif s == "uby" then
		r1, r2 = "ubiĥan lingvon", "ubiĥa lingvo"		
	elseif s == "udm" then
		r1, r2 = "udmurtan lingvon", "udmurta lingvo"
	elseif s == "ur" then
		r1, r2 = "Urduon", "Urduo"
	elseif s == "vec" then
		r1, r2 = "venecian lingvon", "venecia lingvo"		
	elseif s == "vo" then
		r1, r2 = "Volapukon", "Volapuko"
	elseif s == "vot" then
		r1, r2 = "votan lingvon", "vota lingvo"		
	elseif s == "wa" then
		r1, r2 = "valonan lingvon", "valona lingvo"
	elseif s == "wen" then
		r1, r2 = "soraban lingvon", "soraba lingvo"		
	elseif s == "xal" then
		r1, r2 = "kalmukan lingvon", "kalmuka lingvo"
	elseif s == "xcu" then
		r1, r2 = "kuronan lingvon", "kurona lingvo"		
	elseif s == "xh" then
		r1, r2 = "kosan lingvon", "kosa lingvo"
	elseif s == "xpu" then
		r1, r2 = "punikan lingvon", "punika lingvo"		
	elseif s == "xvn" then
		r1, r2 = "vandalan lingvon", "vandala lingvo"
	elseif s == "yur" then
		r1, r2 = "jurokan lingvon", "juroka lingvo"		
	else
		local r = mw.language.fetchLanguageName( s, "eo" )
		if r then
			r1 = r:gsub( "a$", "an lingvon")
			r2 = r:gsub( "a$", "a lingvo" )
		end
	end
	return r1, r2
end

-- gets the flag according to a language code from [[Modulo:Lingvonomo/listo/flagoj]]
local function getFlags(s)
	-- Gets a flag from the flag data page.
	local languageData = mw.loadData('Modulo:Lingvonomo/listo/flagoj')
	for language, aliases in pairs(languageData) do
		if (s==language) then
			local adverb = aliases[1]
			-- local name = aliases[2]
			return adverb, name
		end
	end
end

-- template - parses the ((Lang)) template with two parameters:
-- l - language code and t - text
local function template (l, t)
	local frame = mw.getCurrentFrame()
	local r = frame:expandTemplate{
		   title = 'Lang',
		   args = {
	   			l,
	   			t
	   			}
		   }
	return r
end

-- image tests, if a text could be the name of an image
local function image (t)
	local text = mw.ustring.lower(t)  -- it changes letters into lower case letters
	local ending = mw.ustring.sub(text,-4,-1)
	if (ending ==".gif") or (ending == ".jpg") or (ending == ".png") or (ending == ".svg") then
		local error = false
		return t, error
	else
		local ending = mw.ustring.sub(text,-5,-1)
		if (ending==".jpeg") then
			local error = false
			return t, error
		else
			local r = message("noFlag","flag")
			local error = true
			return r, error
		end
	end
	local r = message("noFlag","flag")
	local error = true
	return r, error
end

-- testweight analyzes if the given value in w is a valid value of the CSS feature font-weight
local function testweight (w)
	local text = mw.ustring.lower(w) .. ""
	if (text=="normal") or (text=="bold") or (text=="bolder") or (text=="lighter")
	or (text=="100") or (text=="200") or (text=="300") or (text=="400") or (text=="500")
	or (text=="600") or (text=="700") or (text=="800") or (text=="900") then
		return w
	else
		return "normal"
	end
end

-- Export
local p = {}
-- main functions:
-- language - creates a link to a language article and an adverb like text
-- has only one needed parameter, the code of the language
-- it is used for the templates ((Ar)) until ((Zh))
function p.language (frame)
	-- This function builds the infobox used by the ((informkesto)) template.
	if not getArgs then
		getArgs = require("Module:Arguments").getArgs
	end
	--local args = getArgs(frame, {wrappers = "Template:Babel"})
	-- post modifo de ((ŝanĝu ŝablonon)) la sekva estos denove ŝanĝenda!
	local args = getArgs(frame, {removeBlanks = false})
	code = args[1]
	-- it analyzes, if the required parameter is wrong or not
	r=analyze (code, "language")
	if (r~="") then return r -- if r is some other than an empty string, it returns the message
	-- and finishes the function
	end
	-- optional parameters
	color = args['koloro'] or args['color']
	background = args['fono'] or args['background']
	size = args['grando'] or args['size']
	weight = args['pezo'] or args['weight']
	accusative = args['akuzativo'] or args['accusative'] -- it is in this function only
	if (color ==nil) or (color == "") then
		c = "color:grey;"
	elseif (color == "defaŭlta") or (color == "normala" ) then
		c = ""
	else
		c = "color:" .. color .. ";"
	end
	if (background~=nil) and (background~="") then
		b = "background-color:" .. background .. ";"
	else
		b = ""
	end
	if (size~=nil) and (size~="") then
		s = "font-size:" .. size .. ";"
	else
		s = ""
	end
	if (weight~=nil) and (weight~="") then
		w = "font-weight:" .. testweight(weight) .. ";"
	else
		w = ""
	end

	code = mw.ustring.lower(code)

	-- if accusative has one of the following values, get the accusative. else the adverb
	if (accusative == "jes") or (accusative=="yes") then
		text, name = getAccusative(code)
	else
		text, name = getLanguages(code)
	end

	if (text ~= "") and (name ~="") then
--	if (adverb~=nil) and (name ~=nil) then
		local linktext = text
		if (c~="") or (b~="") or (s~="") or (w~="") then
			r = "[[" .. name .. '|<span style="' .. c .. b .. s .. w .. '">' .. linktext .. "</span>]]"
		else
			r = "[[" .. name .. '|' .. linktext .. "]]"
		end
	else r = "<span class='error'>La lingva kodo '".. code .. "' ne estas subtenata de la Lua-funkcio 'mw.language.fetchLanguageName'. - en la funkcio: language()</span>"
	end
	return r
end

-- flag - puts an image and creates a link to a language article and an adverb like text
-- has only one needed parameter, the code of the language
-- it is used for the templates ((Flag-ar)) until ((Flag-zh))
function p.flag (frame)
	-- This function builds the infobox used by the ((informkesto)) template.
	if not getArgs then
		getArgs = require("Module:Arguments").getArgs
	end
	--local args = getArgs(frame, {wrappers = "Template:Babel"})
	-- post modifo de ((ŝanĝu ŝablonon)) la sekva estos denove ŝanĝenda!
	local args = getArgs(frame, {removeBlanks = false})
	code = args[1]
	-- it analyzes, if the required parameter is wrong or not
	r=analyze (code, "flag")
	if (r~="") then return r -- if r is some other than an empty string, it returns the message
	-- and finishes the function
	end
	-- optional parameter
	color = args['koloro'] or args['color']
	background = args['fono'] or args['background']
	size = args['grando'] or args['size']
	weight = args['pezo'] or args['weight']
	if (color ~=nil) and (color ~= "") then
		c = "color:" .. color .. ";"
	else
		c = ""
	end
	if (background~=nil) and (background~="") then
		b = "background-color:" .. background .. ";"
	else
		b = ""
	end
	if (size~=nil) and (size~="") then
		s = "font-size:" .. size .. ";"
	else
		s = ""
	end
	if (weight~=nil) and (weight~="") then
		w = "font-weight:" .. testweight(weight) .. ";"
	else
		w = ""
	end

	code = mw.ustring.lower(code)

	local adverb, name = getLanguages(code)
	local flag = getFlags(code)

	if (adverb ~= "") and (name ~="") then
--	if (adverb~=nil) and (name ~=nil) then
		if (flag~=nil) then
			local i, error = image(flag) -- test if the text from the page [[Modulo:Lingvonomo/listo/flagoj]] is an image or not
			if (error == false) then
				r = "[[Dosiero:" .. flag .. "|20px|border]]&nbsp;"
			elseif (error == true) then
				r = i
			end
		else
			r = message("noFlag","flag") -- '<span class="error">La paĝo [[Modulo:Lingvonomo/listo/flagoj]] ne enhavas taŭgan flagon.</span>'
		end
		local linktext = adverb
		local l = name:gsub( " lingvo", "" )
		r = r .. '<span style="cursor:help;font-family:monospace;font-weight:bold;font-size:small" title="Lingvo: ' .. l .. '">'
		if (c~="") or (b~="") or (s~="") or (w~="") then
			r = r .. "[[" .. name .. '|<span style="' .. c .. b .. s .. w .. '">' .. linktext .. "</span>]]"
		else
			r = r .. "[[" .. name .. '|' .. linktext .. "]]"
		end
		r = r .. "</span>"
	else r = "<span class='error'>La lingva kodo '".. code .. "' ne estas subtenata de la Lua-funkcio 'mw.language.fetchLanguageName'. - en la funkcio: flag()</span>"
	end
	return r
end

-- lang - creates a link to a language article and an adverb like text
-- has two needed parameters, the code of the language and the text
function p.lang (frame)
	-- This function builds the infobox used by the ((informkesto)) template.
	if not getArgs then
		getArgs = require("Module:Arguments").getArgs
	end
	--local args = getArgs(frame, {wrappers = "Template:Babel"})
	-- post modifo de ((ŝanĝu ŝablonon)) la sekva estos denove ŝanĝenda!
	local args = getArgs(frame, {removeBlanks = false})
	code = args[1]
	text = args[2]
	-- it analyzes, if the required parameters are wrong or not
	r=analyze2 (code, text, "lang")
	if (r~="") then return r -- if r is some other than an empty string, it returns the message
	-- and finishes the function
	end
	-- optional parameter
	color = args['koloro'] or args['color']
	background = args['fono'] or args['background']
	lcolor = args['l-koloro'] or args['l-color']
	size = args['grando'] or args['size']
	weight = args['pezo'] or args['weight']
	italic = args['kursiva'] or args['italic'] or ""
	link = args['ligilo'] or args['link'] or ""
	short = args["mallonge"]
	adjective = args["adjektivo"] or args["adjective"] or "" -- aktivigas la eligon de adjektivo anstataŭ la kutima adverbo
	-- for alternative text
	au = args['aŭ'] or args['or']
	kaj = args['kaj'] or args['and']
	antaue = args['antaŭe'] or args['before']
	if (color ~=nil) and (color ~= "") then
		c = "color:" .. color .. ";"
	else
		c = ""
	end
	if (background~=nil) and (background~="") then
		b = "background-color:" .. background .. ";"
	else
		b = ""
	end
	if (size~=nil) and (size~="") then
		s = "font-size:" .. size .. ";"
	else
		s = ""
	end
	if (weight~=nil) and (weight~="") and (s~="") then
		w = "font-weight:" .. testweight(weight) .. ";"
	elseif (weight==nil) or (weight=="") and (s~="") then
		w = "font-weight: normal;"
	else
		w = ""
	end
	-- html tags for the font-size, because this is used for both links
	if (s~="") or (w~="") then
		link1 = '<b style="'
		link2 = '">'
		link3 = "</b>"
	else
		link1 = ""
		link2 = ""
		link3 = ""
	end

	code = mw.ustring.lower(code)

	local adverb, name = getLanguages(code)

	if (adverb ~= "") and (name ~="") then
--	if (adverb~=nil) and (name ~=nil) then
		local linktext = adverb
		if adjective == "1" or adjective == "yes" or adjective == "jes" then
			linktext = mw.ustring.gsub( name, " lingvo", "" )
			-- esceptoj
			if code == "ceb" then
				linktext = "cebua"
			elseif code == "jbo" then
				linktext = "loĵbana"
			elseif code == "la"	then
				linktext = "latina"
			elseif code == "pdc" then
				linktext = mw.ustring.gsub( name, " dialekto", "" )	
			-- varianto sen fina "lingvo"	
			elseif code == "pt-br" then
				linktext = name
			-- daŭrigo de esceptoj	
			elseif code == "sa"	or code == "san" then
				linktext = "sanskrita"
			elseif code == "tok" then
				linktext = "tokipona"
			elseif code == "tpi" then
				linktext = "tokpisina"	
			elseif code == "ur" then
				linktext = "urdua"		
			elseif code == "vo" then
				linktext = "volapuka"				
			end
		end
		local i = ""
		if italic == "yes" or italic == "jes" or italic == "" then
			i = "''"
		end
		-- esceptaj lingvokodoj, kie kursiveco ne taŭgas
		if code == "am" or code == "ar" or code == "arc" or code == "bal" or code == "bm" or code == "bn" or code == "bo" or code == "cop" or code == "dv" or code == "dz" or code == "egy"  or code == "fa" or code == "ff" or code == "gu" or code == "he" or
		code == "hi" or code == "hit" or code == "hy" or code == "ja" or code == "ka" or code == "kab" or code == "km" or code == "kn" or code == "ko" or code == "ko-kp" or code == "ko-kr" or code == "lo"  or code == "ml" or code == "mnc" or 
		code == "mni" or code == "mnw" or code == "mr" or code == "my" or code == "ne" or code == "ota" or code == "pa" or code == "pi" or code == "ps" or code == "sa" or code == "san" or code == "sd" or code == "si" or code == "sqt" or code == "sux" or
		code == "ta" or code == "te" or code == "th" or code == "ur" or code == "xpu" or code == "yi"  or code == "zh" then
			i = ""
		end
		-- truko por la ĉina
		local simple
		if code == "zh" then
			simple = args["s"] or args['sh']
			if simple ~= "" and simple ~= nil then
				code = "zh-Hant"
			end
		end
		l = template (code, text) -- invoke the ((Lang)) template
		local l2 = ""
		local vorto = ""
		if au ~= "" and au ~=nil then
			l2 = template(code, au)		
			vorto = " aŭ "
		elseif kaj ~= "" and kaj ~=nil then
			l2 = template(code, kaj)		
			vorto = " kaj "
		elseif antaue ~= "" and antaue ~=nil then
			l2 = template(code, antaue)
			vorto = ", antaŭe "
		end	
		local krampo1 = "[["
		local krampo2 = "]]"
		local streko = "|"
		if short == "1" or short == "jes" or short == "yes" then
			name = ""
			linktext = ""
			krampo1 = ""
			krampo2 = ""
			streko = ""
		elseif lcolor ~= ""	 and lcolor ~= nil then
			linktext = '<span style="color:' .. lcolor .. '">' .. linktext .. '</span>'
		end

		if text ~= "&nbsp;" then

			if (c~="") or (b~="") or (s~="") then
				if link ~= "no" and link ~= "ne" then
					r = link1 .. s .. w .. link2 .. krampo1 .. name .. streko .. linktext .. krampo2 .. '&nbsp;<span style="' .. c .. b .. '">' .. i .. l .. i .. "</span>" .. link3
					if l2 ~= "" then
						r = r .. vorto .. '<span style="' .. c .. b .. '">' .. i .. l2 .. i .. "</span>" .. link3
					end
				else
					r = link1 .. s .. w .. link2 .. linktext .. '&nbsp;<span style="' .. c .. b .. '">' .. i .. l .. i .. "</span>" .. link3
					if l2 ~= "" then
						r = r .. vorto .. '<span style="' .. c .. b .. '">' .. i .. l2 .. i .. "</span>" .. link3
					end					
				end
			else
				if link ~= "no" and link ~="ne" then
					r = krampo1 .. name .. streko .. linktext .. krampo2 .. "&nbsp;" .. i .. l .. i
					if l2 ~= "" then
						r = r .. vorto .. i .. l2 .. i 
					end					
				else
					r = linktext .. "&nbsp;" .. i .. l .. i
					if l2 ~= "" then
						r = r .. vorto .. i .. l2 .. i 
					end						
				end
			end
		else
			if (c~="") or (b~="") or (s~="") then
				if link ~= "no" and link ~= "ne" then
					r = link1 .. s .. w .. link2 .. krampo1 .. name .. streko .. linktext .. krampo2 .. '&nbsp;' .. link3
				else
					r = link1 .. s .. w .. link2 .. linktext .. '&nbsp;'   .. link3
				end
			else
				if link ~= "no" and link ~="ne" then
					r = krampo1 .. name .. streko .. linktext .. krampo2 .. "&nbsp;"
				else
					r = linktext .. "&nbsp;"
				end
			end
		end
		-- translitaracioj por kelkaj lingvoj. aldonoj eblas.
		if code == "zh" or code == "zh-Hant" then
			if simple ~= "" and simple ~= nil then
				r = r ..  '/<span lang="zh-Hans">' ..simple .. '</span>'
			end
			local pinjin = args['p'] or args['pinjino']
			local p = ""
			if pinjin ~= "" and pinjin ~= nil then
				r = r .. ', [[pinjino|pinjine]]: <span lang="zh-Latn">' .. pinjin .. '</span>'
				p = "(alia transskribo) "
			end
			local wg = args['Wade-Giles'] or args['wg']
			if wg ~= "" and wg ~= nil then
				r = r .. ', [[Wade-Giles]]: <span lang="zh-Latn">' .. wg .. '</span>'
			end			
			local j = args['j'] or args['kj'] or args['jyutping']
			if j ~= "" and j ~= nil then
				r = r .. ', [[Jyutping]]: <span lang="zh-Latn">' .. j .. '</span>'
			end	
			local t = args['t']
			if t ~= "" and t ~= nil then
				-- se pinjino antaŭas alian transskribon la supre difinita teksto estas antaŭmetata, alie nenio
				r = r .. ", " .. p .. t
			end
		elseif code == "ja" then
			local h = args['h'] 
			if h ~= "" and h ~= nil then
				if text == "&nbsp;" then
					r = r .. h
				else
					r = r .. ', latinliterigo laŭ [[sistemo Hepburn]] <span lang="ja-Latn">' .. h  .. '</span>'
				end
			end
			local t = args['t']
			if t ~= "" and t ~= nil then
				if text == "&nbsp;" then
					r = r .. t
				else
					r = r .. ", " .. t
				end
			end			
		elseif code == "ko" or code == "ko-kp" or code == "ko-kr" then
			local r2 = args['r'] or args['rtk']
			if r2 ~= "" and r2 ~= nil then
				if text == "&nbsp;" then
					r = r .. r2
				else
					r = r .. ', latinliterigo laŭ [[Revizia latinliteriga transskribo de la korea lingvo|reviziita transskribo]] <span lang="ko-Latn">' .. r2 .. '</span>'
				end
			end
			local mr2 = args['mr'] 
			if mr2 ~= "" and mr2 ~= nil then
				if text == "&nbsp;" then
					r = r .. mr2
				else
					r = r .. ', latinliterigo laŭ [[transskribo de McCune-Reischauer]] <span lang="ko-Latn">' .. mr2 .. '</span>'
				end
			end			
			local t = args['t']
			if t ~= "" and t ~= nil then
				if text == "&nbsp;" then
					r = r .. t
				else
					r = r .. ", " .. t
				end
			end				
		elseif code == "ar"  or code == "fa" or code == "ps" or code == "ur" then
			local d = args['d'] 
			if d ~= "" and d ~= nil then
				if text == "&nbsp;" then
					r = r .. d 
				else
					r = r .. ", [[DIN 31635|DMG]] " .. '<span lang="' .. code .. '-Latn">' .. d .. '</span>'
				end
			end
			local t = args['t']
			if t ~= "" and t ~= nil then
				if text == "&nbsp;" then
					r = r .. t
				else
					r = r .. ", " .. t
				end
			end	
		elseif code == "sa" or code == "san" then
			local i = args['i'] or args['iast']
			if i ~= "" and i ~= nil then
				r = r .. ' [[IAST]]: ' .. '<span lang="' .. code .. '-Latn">' .. i .. '</span>'
			end	
		elseif code ~= "eo" then
			local t = args['t']
			if t ~= "" and t ~= nil then
				if text == "&nbsp;" then
					r = r .. t
				else
					r = r .. ", " .. t
				end
			end
		end
	else r = "<span class='error'>La lingva kodo '".. code .. "' ne estas subtenata de la Lua-funkcio 'mw.language.fetchLanguageName'. - en la funkcio: lang()</span>"
	end
	return r
end

-- exist analyzes if a code is a language code in mw.language.fetchLanguageName
function p.exist (frame)
	-- This function builds the infobox used by the ((informkesto)) template.
	if not getArgs then
		getArgs = require("Module:Arguments").getArgs
	end
	--local args = getArgs(frame, {wrappers = "Template:Babel"})
	-- post modifo de ((ŝanĝu ŝablonon)) la sekva estos denove ŝanĝenda!
	local args = getArgs(frame, {removeBlanks = false})
	code = args[1]
	-- it analyzes, if the required parameter is wrong or not
	r=analyze (code, "exist")
	if (r~="") then return r -- if r is some other than an empty string, it returns the message
	-- and finishes the function
	end

	local text, name = getLanguages(code)
	if (text~="") and (name~="") then
		return true
	else
		return false
	end

end

-- list returns all langugage from the function mw.language.fetchLanguageNames in a wikitable
function p.list (frame)
	-- This function builds the infobox used by the ((informkesto)) template.
	if not getArgs then
		getArgs = require("Module:Arguments").getArgs
	end
	--local args = getArgs(frame, {wrappers = "Template:Babel"})
	-- post modifo de ((ŝanĝu ŝablonon)) la sekva estos denove ŝanĝenda!
	local args = getArgs(frame, {removeBlanks = false})	
	local r = '{| class="wikitable sortable"\n'
	r = r .. "|-\n" .. "! Kodo !! Nomo\n" -- head of the table
	local languages = mw.language.fetchLanguageNames("eo","all")
	local a = {}
	local number = 0
	for n in pairs(languages) do
		a[#a + 1] = n
	end
	number = #a
	table.sort(a)
	r = r .. "|-\n" .. '! colspan="2" |  nombro: ' .. number .. "\n"
	for index, code in pairs(a) do
		local name = ""
		for c, n in pairs(languages) do
			if (c == code) then
				name = n
				break
			end
		end
		r = r .. "|-\n" .. "| " .. code .. " || " .. name .. "\n"
	end
	r = r .. "|}\n"
	r = r .. "nombro: " .. number
	return r
end


return p
{{bottomLinkPreText}} {{bottomLinkText}}
Modulo:Lingvonomo
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?