Module:catégorie langue

La documentation pour ce module peut être créée à Module:catégorie langue/Documentation

b = require('Module:bases')
l = require('Module:langues')

local p = {}

function p.categorie_langue(frame)
	local args = frame:getParent().args
	local cat = args[1] or mw.title.getCurrentTitle().text
	local nom_affiche = args[2] or cat
	-- number of pages in a category. Expensive function call
	local pages_in_cat = mw.site.stats.pagesInCategory( cat, 'pages' )
	-- objet Language utilisé pour convertir au pluriel
	local fr = mw.language.new( 'fr' )
	local categories = {} -- table qui contient toutes les catégories

	local texte = '[[:Catégorie:' .. cat .. '|' .. fr:formatNum( pages_in_cat )
				.. ' ' .. fr:convertPlural( pages_in_cat, 'entrée', 'entrées' )
				.. ' en ' .. nom_affiche .. ']]'
				.. ' dans le Wiktionnaire [[Image:Structure_du_site_icône.svg|20px|dans la catégorie|link=]]'
	
	-- nocat ?
	local nocat = args['nocat']
	if nocat then return texte end
	
	-- ajout cat générale "Langues en <lang>"
	local lang = args['lang'] or 'fr'
	local nom_lang = l.get_nom(lang)

	-- ajout cats spécifiques si paramètres spéc1, ..., spéc10
	local spec = args[3] or args['spéc'] or args['spéc1']
	local specNo = 1
	if not spec then
		local categorie = b.fait_categorie_contenu( 'Langues en ' .. nom_lang)
		table.insert( categories, categorie )
	else
		while spec do
			cat_name = 'Langues ' .. spec .. ' en ' .. nom_lang
			local categorie = b.fait_categorie_contenu( cat_name )
			table.insert( categories, categorie )
			specNo = specNo + 1
			spec = args['spéc'..specNo]
		end
	end
	
	local texte_categories = table.concat(categories)
	return texte .. texte_categories
end

return p