<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://fr.stargatewiki.noip.me/index.php?action=history&amp;feed=atom&amp;title=Module%3ABiblio%2FCommun</id>
	<title>Module:Biblio/Commun - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://fr.stargatewiki.noip.me/index.php?action=history&amp;feed=atom&amp;title=Module%3ABiblio%2FCommun"/>
	<link rel="alternate" type="text/html" href="https://fr.stargatewiki.noip.me/index.php?title=Module:Biblio/Commun&amp;action=history"/>
	<updated>2026-04-16T04:43:10Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://fr.stargatewiki.noip.me/index.php?title=Module:Biblio/Commun&amp;diff=186&amp;oldid=prev</id>
		<title>LIMAFOX76 : Page créée avec « -- Les fonctions du module Biblio/Commun sont des éléments nécessaire au modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web.  local Commun = {}   local Date = requ... »</title>
		<link rel="alternate" type="text/html" href="https://fr.stargatewiki.noip.me/index.php?title=Module:Biblio/Commun&amp;diff=186&amp;oldid=prev"/>
		<updated>2016-02-01T11:50:47Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « -- Les fonctions du module Biblio/Commun sont des éléments nécessaire au modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web.  local Commun = {}   local Date = requ... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Les fonctions du module Biblio/Commun sont des éléments nécessaire au modules Biblio/Ouvrage, Biblio/Article, Biblio/Lien web.&lt;br /&gt;
&lt;br /&gt;
local Commun = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local Date = require( &amp;#039;Module:Date&amp;#039; )&lt;br /&gt;
local Outils = require( &amp;#039;Module:Outils&amp;#039; )&lt;br /&gt;
local TableBuilder = require( &amp;#039;Module:TableBuilder&amp;#039; )&lt;br /&gt;
local Langue -- = require( &amp;#039;Module:Langue&amp;#039; ) ne sera chargé que si nécessaire&lt;br /&gt;
local Languedata -- = mw.loadData( &amp;#039;Module:Langue/Data&amp;#039; ) ne sera chargé que si nécessaire&lt;br /&gt;
&lt;br /&gt;
local abr = Outils.abr      -- fonction abréviation discréte&lt;br /&gt;
&lt;br /&gt;
-- extractArgs permet de récupérer les arguement du modèle, &lt;br /&gt;
-- ou la table transmise à la fonction par une autre fonction d&amp;#039;un module&lt;br /&gt;
local extractArgs = Outils.extractArgs&lt;br /&gt;
&lt;br /&gt;
function Commun.validTextArg( args, name, ... ) &lt;br /&gt;
	local texte = args[name]&lt;br /&gt;
	if type( texte ) == &amp;#039;string&amp;#039; and texte ~= &amp;#039;&amp;#039; and texte:match( &amp;#039;%S&amp;#039; ) then&lt;br /&gt;
		return texte&lt;br /&gt;
	elseif #{ ... } &amp;gt; 0 then&lt;br /&gt;
		return Commun.validTextArg( args, ... )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Abréviation utiles &lt;br /&gt;
Commun.chap =   abr{ &amp;#039;chap.&amp;#039;, &amp;#039;chapitre(s)&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.coll =   abr{ &amp;#039;coll.&amp;#039;, &amp;#039;collection&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.ed =     abr{ &amp;#039;éd.&amp;#039;, &amp;#039;édition&amp;#039;, nbsp=&amp;#039;-&amp;#039; }&lt;br /&gt;
Commun.nbp =    abr{ &amp;#039;p.&amp;#039;, &amp;#039;pages&amp;#039;, nbsp=&amp;#039;-&amp;#039; }&lt;br /&gt;
Commun.numero = abr{ &amp;#039;n&amp;lt;sup&amp;gt;o&amp;lt;/sup&amp;gt;&amp;#039;, &amp;#039;numéro&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.page =   abr{ &amp;#039;p.&amp;#039;, &amp;#039;page(s)&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.plume = [=[&amp;amp;nbsp;&amp;lt;span title=&amp;quot;Ouvrage utilisé pour la rédaction de l&amp;#039;article&amp;quot;&amp;gt;[[Image:Nuvola apps ksig horizonta.png|30px|link=|alt=Ouvrage utilisé pour la rédaction de l&amp;#039;article]]&amp;lt;/span&amp;gt;]=]&lt;br /&gt;
Commun.premiere = abr{ &amp;#039;1&amp;lt;sup&amp;gt;re&amp;lt;/sup&amp;gt;&amp;#039;, &amp;#039;première&amp;#039; }&lt;br /&gt;
Commun.reimpr = abr{ &amp;#039;réimpr.&amp;#039;, &amp;#039;réimpression&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.tome = abr{ &amp;#039;t.&amp;#039;, &amp;#039;tome&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
Commun.vol = abr{ &amp;#039;vol.&amp;#039;, &amp;#039;volume&amp;#039;, nbsp=&amp;#039;+&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function Commun.detailEdition( ref )&lt;br /&gt;
	return &amp;#039;&amp;lt;small&amp;gt;&amp;amp;#91;[[&amp;#039; .. ref .. &amp;#039;|détail de l’édition]]&amp;amp;#93;&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Commun.detailEditions( ref ) &lt;br /&gt;
	return &amp;#039;&amp;lt;small&amp;gt;&amp;amp;#91;[[&amp;#039; .. ref .. &amp;#039;|détail des éditions]]&amp;amp;#93;&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- affiche le texte en nombre romain majuscule.&lt;br /&gt;
function Commun.romain( texte )&lt;br /&gt;
    local a = &amp;#039;&amp;lt;span class=&amp;quot;romain&amp;quot; style=&amp;quot;text-transform:uppercase&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    local b = &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    return a, texte, b&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Commun.fusionTexteLien( texte, lien, categ )&lt;br /&gt;
	local categorisation, result&lt;br /&gt;
	local message = &amp;#039;&amp;lt;sup style=&amp;quot;color:red;&amp;quot;&amp;gt;[le lien externe a été retiré]&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
	if lien and lien ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if texte:match( &amp;#039;%[%[&amp;#039; ) then&lt;br /&gt;
			result = Commun.fusionTexteLien( texte, nil, categ )&lt;br /&gt;
		elseif lien:match( &amp;#039;^http&amp;#039; ) or lien:match( &amp;#039;//&amp;#039; ) then&lt;br /&gt;
			lien = false&lt;br /&gt;
			categorisation = true&lt;br /&gt;
			result = texte .. message&lt;br /&gt;
		else&lt;br /&gt;
			result = string.format( &amp;#039;[[%s|%s]]&amp;#039;, lien, texte )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		--[=[ if texte:match( &amp;#039;//&amp;#039; ) then&lt;br /&gt;
			result = texte:gsub( &amp;#039;%[https?://[^%[%] ]* *([^%]]+)%]&amp;#039;, &amp;#039;%1&amp;#039; )&lt;br /&gt;
								:gsub( &amp;#039;%[//[^%[%] ]* *([^%]]+)%]&amp;#039;, &amp;#039;%1&amp;#039; )&lt;br /&gt;
			if result ~= texte then&lt;br /&gt;
				result = result .. message&lt;br /&gt;
				categorisation = true&lt;br /&gt;
			end&lt;br /&gt;
		end ]=] -- désactivé pour le moment (peut être activé si quelqu&amp;#039;un est prêt à corriger les erreurs)&lt;br /&gt;
	end&lt;br /&gt;
	if categorisation and type( categ ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		categ.lienExterne = true&lt;br /&gt;
	end&lt;br /&gt;
	return result or texte&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/span initial&lt;br /&gt;
function Commun.spanInitial( args, validArg )&lt;br /&gt;
	local id, id2 = validArg( &amp;#039;id&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	if id then&lt;br /&gt;
		id = &amp;#039; id=&amp;quot;&amp;#039; .. id .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		local nom = validArg( &amp;#039;nom1&amp;#039;, &amp;#039;nom&amp;#039;, &amp;#039;last1&amp;#039;, &amp;#039;last&amp;#039;, &amp;#039;author&amp;#039; )&lt;br /&gt;
		local prenom = validArg( &amp;#039;prénom1&amp;#039;, &amp;#039;prénom&amp;#039;, &amp;#039;firt1&amp;#039;, &amp;#039;first&amp;#039; )&lt;br /&gt;
		local postnom = validArg(&amp;#039;postnom1&amp;#039;, &amp;#039;postnom&amp;#039; )&lt;br /&gt;
		local auteur_i = validArg( &amp;#039;auteur1&amp;#039;, &amp;#039;author1&amp;#039;, &amp;#039;auteur&amp;#039; )&lt;br /&gt;
		local i = 1&lt;br /&gt;
		local idTab, id2Tab = { }, { }&lt;br /&gt;
		&lt;br /&gt;
		while nom or auteur_i do&lt;br /&gt;
			if auteur_i and not nom then&lt;br /&gt;
				-- tentative de séparation de l&amp;#039;auteur en prénom nom. &lt;br /&gt;
				-- Enregistre le résultat dans args pour les COinS.&lt;br /&gt;
				auteur_i = Outils.texteLien( auteur_i )&lt;br /&gt;
				if auteur_i == &amp;#039;&amp;#039; then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
				local a1, a2, a3 = string.match( auteur_i, &amp;#039;^([^ ]+) ?([^ ]*) ?(.*)$&amp;#039; )&lt;br /&gt;
				if Outils.notEmpty( a3 ) then&lt;br /&gt;
					local a2len = mw.ustring.len( a2 )&lt;br /&gt;
					if a2len == 1 or ( a2len == 2 and mw.ustring.sub( a2, -1 ) == &amp;quot;.&amp;quot; ) then&lt;br /&gt;
						-- a1 est le prénom, a2 une initiale et a3 le nom&lt;br /&gt;
						nom = a3&lt;br /&gt;
						if i == 1 then&lt;br /&gt;
							args.nom = a3&lt;br /&gt;
							args[&amp;#039;prénom&amp;#039;] = a1 .. &amp;#039; &amp;#039; .. a2&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						-- a2 peut être le deuxième prénon ou le début du nom&lt;br /&gt;
						nom = a2 .. &amp;#039; &amp;#039; .. a3&lt;br /&gt;
					end&lt;br /&gt;
				elseif Outils.notEmpty( a2 ) then&lt;br /&gt;
					-- a1 prénom, a2 nom&lt;br /&gt;
					nom = a2&lt;br /&gt;
					if i == 1 then&lt;br /&gt;
						args.nom = a2&lt;br /&gt;
						args[&amp;#039;prénom&amp;#039;] = a1&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					nom = a1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if not auteur_i then&lt;br /&gt;
				if prenom and postnom then&lt;br /&gt;
					auteur_i = prenom .. &amp;#039; &amp;#039; .. nom .. &amp;#039; &amp;#039; .. postnom&lt;br /&gt;
				elseif prenom then&lt;br /&gt;
					auteur_i = prenom .. &amp;#039; &amp;#039; .. nom&lt;br /&gt;
				elseif postnom then&lt;br /&gt;
					auteur_i = nom .. &amp;#039; &amp;#039; .. postnom&lt;br /&gt;
				else&lt;br /&gt;
					auteur_i = nom&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( idTab, mw.uri.anchorEncode( nom ) )&lt;br /&gt;
			table.insert( id2Tab, mw.uri.anchorEncode( auteur_i ) )&lt;br /&gt;
			&lt;br /&gt;
			if i == 4 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			nom = validArg( &amp;#039;nom&amp;#039; .. i, &amp;#039;last&amp;#039; .. i )&lt;br /&gt;
			prenom = validArg( &amp;#039;prénom&amp;#039; .. i, &amp;#039;first&amp;#039; .. i )&lt;br /&gt;
			postnom = validArg( &amp;#039;postnom&amp;#039; .. i)&lt;br /&gt;
			auteur_i = validArg( &amp;#039;auteur&amp;#039; .. i, &amp;#039;author&amp;#039; .. i )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #idTab &amp;lt; 4 and validArg( &amp;#039;auteur institutionnel&amp;#039; ) then&lt;br /&gt;
			table.insert( idTab, mw.uri.anchorEncode( validArg( &amp;#039;auteur institutionnel&amp;#039; ) ) )&lt;br /&gt;
			table.insert( id2Tab, idTab[#idTab] )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local annee = validArg( &amp;#039;année&amp;#039;, &amp;#039;year&amp;#039; )&lt;br /&gt;
		if annee then&lt;br /&gt;
			table.insert( idTab, mw.uri.anchorEncode( annee ) )&lt;br /&gt;
			table.insert( id2Tab, idTab[#idTab] )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #idTab &amp;gt; 0 then&lt;br /&gt;
			id = &amp;#039; id=&amp;quot;&amp;#039; .. table.concat( idTab ) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
			id2 = &amp;#039; id=&amp;quot;&amp;#039; .. table.concat( id2Tab ) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
			if id2 == id then&lt;br /&gt;
				id2 = false&lt;br /&gt;
			end&lt;br /&gt;
		else &lt;br /&gt;
			id = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local spaninitial, spanfinal&lt;br /&gt;
	if id2 then&lt;br /&gt;
		spaninitial = &amp;#039;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&amp;#039; .. id .. &amp;#039;&amp;gt;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&amp;#039; .. id2 .. &amp;#039;&amp;gt;&amp;#039;&lt;br /&gt;
		spanfinal = &amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		spaninitial = &amp;#039;&amp;lt;span class=&amp;quot;ouvrage&amp;quot;&amp;#039; .. id .. &amp;#039;&amp;gt;&amp;#039;&lt;br /&gt;
		spanfinal = &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return spaninitial, spanfinal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/libellé&lt;br /&gt;
function Commun.libelle( args )&lt;br /&gt;
	local lib = args[&amp;#039;libellé&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	if lib ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		lib = &amp;#039;&amp;lt;small&amp;gt;[&amp;#039; .. lib .. &amp;#039;]&amp;lt;/small&amp;gt; &amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return lib&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Commentaire biblio&lt;br /&gt;
function Commun.commentaire( args )&lt;br /&gt;
	if Outils.trim( args.commentaire ) then&lt;br /&gt;
		local a = &amp;#039;&amp;lt;div style=&amp;quot;Margin-top:0.1em ;margin-left:2em; line-height:1.5; margin-bottom:0.5em;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
		local b = &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
		return a, args.commentaire, b&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/indication de langue&lt;br /&gt;
function Commun.indicationDeLangue( args, validArg )&lt;br /&gt;
	local lang = validArg( &amp;#039;langue&amp;#039;, &amp;#039;lang&amp;#039;, &amp;#039;lien langue&amp;#039;, &amp;#039;language&amp;#039; )&lt;br /&gt;
	if lang then&lt;br /&gt;
		Langue = require( &amp;#039;Module:Langue&amp;#039; )&lt;br /&gt;
		&lt;br /&gt;
		-- on essai le code de langue comlet (nécessaire pour les langues avec plusieurs mot comme &amp;quot;grec ancien&amp;quot;)&lt;br /&gt;
		local codeLangue = Langue.codeLangue2( lang )&lt;br /&gt;
		if codeLangue ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			if codeLangue == &amp;#039;fr&amp;#039; then&lt;br /&gt;
				return &amp;#039;&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				return Langue.indicationMultilingue{ codeLangue }, codeLangue&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- si la langue n&amp;#039;a pas été trouvé on considère qu&amp;#039;il y a plusieurs langues&lt;br /&gt;
		-- séparation des langues s&amp;#039;il y en a plusieurs&lt;br /&gt;
		local listeLangue = mw.text.split( lang, &amp;#039;[+,;:/ %.]+&amp;#039; )&lt;br /&gt;
		&lt;br /&gt;
		-- code langue principal qui sera appliqué aux titres&lt;br /&gt;
		codeLangue = Langue.codeLangue2( listeLangue[1] )&lt;br /&gt;
		&lt;br /&gt;
		if codeLangue == &amp;#039;&amp;#039; then&lt;br /&gt;
			if type( args.categ ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				args.categ.langue = true&lt;br /&gt;
			end&lt;br /&gt;
			return Langue.indicationMultilingue( listeLangue )&lt;br /&gt;
		else&lt;br /&gt;
			-- cacul code de langue et catégorie&lt;br /&gt;
			local indicadionLangue = Langue.indicationMultilingue( listeLangue )&lt;br /&gt;
			if type( args.categ ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				args.categ.langue = indicadionLangue:find( &amp;#039;???&amp;#039; , 1, true )&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if codeLangue ~= &amp;#039;fr&amp;#039; then&lt;br /&gt;
				return indicadionLangue, codeLangue&lt;br /&gt;
			elseif #listeLangue &amp;gt; 1 then&lt;br /&gt;
				return indicadionLangue, codeLangue&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/responsabilité principale&lt;br /&gt;
function Commun.responsabilitePrincipale( args, validArg )&lt;br /&gt;
&lt;br /&gt;
	local nom = validArg( &amp;#039;nom1&amp;#039;, &amp;#039;nom&amp;#039;, &amp;#039;last1&amp;#039;, &amp;#039;last&amp;#039; )&lt;br /&gt;
	local auteur = validArg( &amp;#039;auteur1&amp;#039;, &amp;#039;auteur&amp;#039;, &amp;#039;author1&amp;#039;, &amp;#039;author&amp;#039; )&lt;br /&gt;
	local auteurInstitutionnel = validArg( &amp;#039;auteur institutionnel&amp;#039; )&lt;br /&gt;
	if not ( nom or auteur or auteurInstitutionnel ) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nom or auteur then&lt;br /&gt;
		-- clarification des paramètres&lt;br /&gt;
		args[&amp;#039;prénom1&amp;#039;] = validArg( &amp;#039;prénom1&amp;#039;, &amp;#039;prénom&amp;#039;, &amp;#039;first1&amp;#039;, &amp;#039;first&amp;#039; )&lt;br /&gt;
		args[&amp;#039;postnom1&amp;#039;] = validArg( &amp;#039;postnom1&amp;#039;, &amp;#039;postnom&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
		args.directeur1 = validArg( &amp;#039;directeur1&amp;#039;, &amp;#039;directeur&amp;#039; )&lt;br /&gt;
		args[&amp;#039;lien auteur1&amp;#039;] = validArg( &amp;#039;lien auteur1&amp;#039;, &amp;#039;lien auteur&amp;#039;, &amp;#039;author-link&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- préparation des variables&lt;br /&gt;
	local listeRresponsables = { }  -- contiendra un élément pour chaque nom&lt;br /&gt;
	local directeur = abr { &amp;#039;dir.&amp;#039;, &amp;#039;directeur de publication&amp;#039; }&lt;br /&gt;
	local prenom, postnom, dir, responsable, lien, precision, resp&lt;br /&gt;
	local i = 1&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	-- boucle sur chaque nom, assemble toutes les caractéristique et ajoute l&amp;#039;ensemble à la liste.&lt;br /&gt;
	while nom or auteur do&lt;br /&gt;
	&lt;br /&gt;
		-- nom de l&amp;#039;auteur&lt;br /&gt;
		if not auteur then&lt;br /&gt;
			prenom = validArg( &amp;#039;prénom&amp;#039; .. i, &amp;#039;first&amp;#039; .. i )&lt;br /&gt;
			nom = &amp;#039;&amp;lt;span class=&amp;quot;nom_auteur&amp;quot;&amp;gt;&amp;#039; .. nom .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			postnom = validArg( &amp;#039;postnom&amp;#039; .. i)&lt;br /&gt;
			if prenom and postnom then&lt;br /&gt;
				auteur = prenom .. &amp;#039; &amp;#039; .. nom .. &amp;#039; &amp;#039; .. postnom&lt;br /&gt;
			elseif prenom then&lt;br /&gt;
				auteur = prenom .. &amp;#039; &amp;#039; .. nom&lt;br /&gt;
			elseif postnom then&lt;br /&gt;
				auteur = nom .. &amp;#039; &amp;#039; .. postnom&lt;br /&gt;
			else&lt;br /&gt;
				auteur = nom&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- lien sur l&amp;#039;auteur&lt;br /&gt;
		auteur = Commun.fusionTexteLien( auteur, args[&amp;#039;lien auteur&amp;#039; .. i], args.categ)&lt;br /&gt;
&lt;br /&gt;
		-- définition des responsabilités&lt;br /&gt;
		dir = validArg( &amp;#039;directeur&amp;#039; .. i )&lt;br /&gt;
		resp = validArg( &amp;#039;responsabilité&amp;#039; .. i )&lt;br /&gt;
		if dir then&lt;br /&gt;
			if resp then&lt;br /&gt;
				precision = &amp;#039; (&amp;#039; .. directeur .. &amp;#039; et &amp;#039; .. resp .. &amp;#039;)&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				precision = &amp;#039; (&amp;#039; .. directeur .. &amp;#039;)&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif resp then&lt;br /&gt;
			precision = &amp;#039; (&amp;#039; .. resp .. &amp;#039;)&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			precision = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table.insert( listeRresponsables, auteur .. precision )&lt;br /&gt;
&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		nom = validArg( &amp;#039;nom&amp;#039; .. i, &amp;#039;last&amp;#039; .. i )&lt;br /&gt;
		auteur = validArg( &amp;#039;auteur&amp;#039; .. i, &amp;#039;author&amp;#039; .. i )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local listeAuteurs&lt;br /&gt;
	local et_al = &amp;#039;&amp;#039;&lt;br /&gt;
	if validArg( &amp;#039;et al.&amp;#039;, &amp;#039;et alii&amp;#039; ) then&lt;br /&gt;
		et_al = &amp;quot; &amp;#039;&amp;#039;&amp;quot; .. abr { &amp;quot;et al.&amp;quot;, &amp;quot;et alii (et d’autres)&amp;quot; } .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		listeAuteurs = table.concat( listeRresponsables, &amp;#039;, &amp;#039; ) .. et_al&lt;br /&gt;
	else&lt;br /&gt;
		listeAuteurs = mw.text.listToText( listeRresponsables )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if auteurInstitutionnel then&lt;br /&gt;
		if #listeRresponsables &amp;gt; 0 then&lt;br /&gt;
			return listeAuteurs .. &amp;#039;, &amp;#039; .. auteurInstitutionnel&lt;br /&gt;
		else&lt;br /&gt;
			return auteurInstitutionnel .. et_al&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return listeAuteurs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- voir Module biblio/responsabilité secondaire&lt;br /&gt;
function Commun.responsabiliteSecondaire( args, validArg )&lt;br /&gt;
	local liste = { }&lt;br /&gt;
	&lt;br /&gt;
	-- fonction qui teste l&amp;#039;existence d&amp;#039;un paramètre et insérere  dans liste une abréviation discrète suivi de ce paramètre&lt;br /&gt;
	local function insertAbr( arg, abrev, texte )&lt;br /&gt;
		if arg then&lt;br /&gt;
			table.insert( liste, abr{ abrev, texte, nbsp=&amp;#039;+&amp;#039; } .. arg )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- langue originale et traducteur&lt;br /&gt;
	local trad = validArg( &amp;#039;traducteur&amp;#039;, &amp;#039;trad&amp;#039;, &amp;#039;traduction&amp;#039; ) &lt;br /&gt;
	local langueOriginale = validArg( &amp;#039;langue originale&amp;#039; )&lt;br /&gt;
	if langueOriginale then &lt;br /&gt;
		local Languedata = mw.loadData( &amp;#039;Module:Langue/Data&amp;#039; )&lt;br /&gt;
		langueOriginale = Languedata[langueOriginale] and Languedata[langueOriginale].nom&lt;br /&gt;
	end&lt;br /&gt;
	if langueOriginale then&lt;br /&gt;
		if trad then&lt;br /&gt;
			 trad = &amp;#039; par &amp;#039; .. trad&lt;br /&gt;
		else&lt;br /&gt;
			trad = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if mw.ustring.sub( langueOriginale, 1, 1 ):match( &amp;#039;[a, e, é, è, i, o, u, y]&amp;#039; ) or &lt;br /&gt;
			langueOriginale == &amp;#039;hébreu&amp;#039; then&lt;br /&gt;
			trad = &amp;quot;de l&amp;#039;&amp;quot; .. langueOriginale .. trad&lt;br /&gt;
		else&lt;br /&gt;
			trad = &amp;#039;du &amp;#039; .. langueOriginale .. trad&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	insertAbr( trad, &amp;#039;trad.&amp;#039;, &amp;#039;traduction&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- ajout des différents responsables&lt;br /&gt;
	insertAbr( validArg( &amp;#039;préface&amp;#039; ), &amp;#039;préf.&amp;#039;, &amp;#039;préface&amp;#039; )&lt;br /&gt;
	if validArg( &amp;#039;postface&amp;#039; ) then&lt;br /&gt;
		table.insert( liste, &amp;#039;postface &amp;#039; .. args.postface )&lt;br /&gt;
	end&lt;br /&gt;
	insertAbr( validArg( &amp;#039;illustrateur&amp;#039; ), &amp;#039;ill.&amp;#039;, &amp;#039;illustrations&amp;#039; )&lt;br /&gt;
	insertAbr( validArg( &amp;#039;photographe&amp;#039; ), &amp;#039;photogr.&amp;#039;, &amp;#039;photographies&amp;#039; )&lt;br /&gt;
	if validArg( &amp;#039;champ libre&amp;#039; ) then&lt;br /&gt;
		table.insert( liste, args[&amp;#039;champ libre&amp;#039;] )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- concaténation de l&amp;#039;ensemble&lt;br /&gt;
	local texte = table.concat( liste, &amp;#039;, &amp;#039;)&lt;br /&gt;
	if texte ~= &amp;#039;&amp;#039; then &lt;br /&gt;
		return &amp;#039; (&amp;#039; .. texte .. &amp;#039;)&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
-- voir émule le modèle:Inscription date&lt;br /&gt;
-- la détection des arguments permet d&amp;#039;utilisé la fonction depuis un modèle, depuis invoke, ou depuis une autre fonction.&lt;br /&gt;
-- pour facilité l&amp;#039;écriture de lua, annee (sans accent) est accepté lors de l&amp;#039;appel depuis lua.&lt;br /&gt;
function Commun.inscriptionDate( frame )&lt;br /&gt;
	local args = Outils.extractArgs( frame )&lt;br /&gt;
	local annee = Outils.notEmpty( args[&amp;#039;année&amp;#039;], args.annee, args.year )&lt;br /&gt;
	if annee then&lt;br /&gt;
		if annee:match( &amp;#039;^%-?%d+$&amp;#039; ) then&lt;br /&gt;
			-- si l&amp;#039;année est correctement renseigné, on essaye de trouver le mois&lt;br /&gt;
			local mois = Outils.notEmpty( args.mois, args.month, args.saison )&lt;br /&gt;
			mois = string.lower(Date.determinationMois( mois ) or Date.valideSaison( mois ) or mois or &amp;#039;&amp;#039;)&lt;br /&gt;
			local jour = Outils.notEmpty( args.jour, args.day, args[&amp;#039;quantième&amp;#039;] )&lt;br /&gt;
			local t, jma = Date.validationJourMoisAnnee( jour, mois, annee )&lt;br /&gt;
			if t then&lt;br /&gt;
				return Date.modeleDate{ jour, mois, annee, nolinks=true }&lt;br /&gt;
			else&lt;br /&gt;
				local date = { jour }&lt;br /&gt;
				table.insert( date, mois )&lt;br /&gt;
				table.insert( date, annee )&lt;br /&gt;
				return &amp;#039;&amp;lt;time class=&amp;quot;nowrap&amp;quot; datevalue=&amp;quot;&amp;#039; .. annee .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. table.concat( date, &amp;#039; &amp;#039; ) .. &amp;#039;&amp;lt;/time&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return Commun.inscriptionDate{ date = annee }&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- si annee n&amp;#039;est pas précisé, on utilise la paramètre date&lt;br /&gt;
		local date = Outils.validTextArg( args, &amp;#039;date&amp;#039; )&lt;br /&gt;
		if date then&lt;br /&gt;
			date = date:lower()&lt;br /&gt;
			date = date:gsub( &amp;#039;^(%d%d%d%d%-%d%d%-%d%d)t[%d:+-]+$&amp;#039;, &amp;#039;%1&amp;#039;) -- Date iso avec l&amp;#039;heure : suppression de l&amp;#039;heure&lt;br /&gt;
			local t, jma = Date.separationJourMoisAnnee( date )&lt;br /&gt;
			if t and ( Date.determinationMois( jma.mois ) or Date.valideSaison( jma.mois ) ) then &lt;br /&gt;
				args[&amp;#039;année&amp;#039;] = jma.annee&lt;br /&gt;
				jma.nolinks = true&lt;br /&gt;
				jma.nocat = true&lt;br /&gt;
				return Date.modeleDate( jma )&lt;br /&gt;
			else	&lt;br /&gt;
				-- date non reconnue, on essaye Month day, year&lt;br /&gt;
				local mois, jour, annee = mw.ustring.match( date, &amp;#039;^([%a]+)%s*(%d%d?)[,%s]+(%d+)$&amp;#039; )&lt;br /&gt;
				if Date.determinationMois( mois ) or Date.valideSaison( mois ) then&lt;br /&gt;
					return Date.modeleDate{ jour, mois, annee, nolinks=true }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return date&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- retire toutes le lien interne, externe et balise html pour ne garder que le texte brut.&lt;br /&gt;
local function nettoyageTexte( texte )&lt;br /&gt;
	if type( texte ) == &amp;#039;string&amp;#039;  then&lt;br /&gt;
		if texte:match( &amp;#039;[%[&amp;lt;]&amp;#039; ) then&lt;br /&gt;
			local function texteDuLien( l, t ) &lt;br /&gt;
				return ( t ~= &amp;#039;&amp;#039; and t ) or l &lt;br /&gt;
			end&lt;br /&gt;
			-- nettoyage des liens interne&lt;br /&gt;
			texte = texte:gsub( &amp;#039;%[%[([^%[%]|]*)|?([^%[%]]*)%]%]&amp;#039;, texteDuLien )&lt;br /&gt;
			-- nettoyage des liens externes&lt;br /&gt;
				:gsub( &amp;#039;%[https?://[^%[%] ]* *([^%]]+)%]&amp;#039;, &amp;#039;%1&amp;#039; )&lt;br /&gt;
				:gsub( &amp;#039;%[//[^%[%] ]* *([^%]]+)%]&amp;#039;, &amp;#039;%1&amp;#039; )&lt;br /&gt;
			-- nettoyage des balise html&lt;br /&gt;
				:gsub( &amp;#039;%b&amp;lt;&amp;gt;&amp;#039;, &amp;#039;&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		return texte&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:COinS bibliographique&lt;br /&gt;
-- NISO Z39.88&lt;br /&gt;
-- http://www.openurl.info/registry&lt;br /&gt;
function Commun.COinS( args, validArg, genre ) &lt;br /&gt;
	local liste = { }&lt;br /&gt;
	&lt;br /&gt;
	-- insertlist ajoute à la table &amp;#039;liste&amp;#039; un couple &amp;#039;nom Coins normalisé&amp;#039; - &amp;#039;donnée&amp;#039; &lt;br /&gt;
	-- Si istexte = true, le deuxième élément de tab est considéré comme du texte, &lt;br /&gt;
	-- sinon comme le nom d&amp;#039;un paramètre.&lt;br /&gt;
	local function insertList( key, value, prefix )&lt;br /&gt;
		prefix = prefix or &amp;#039;&amp;#039;&lt;br /&gt;
		if type( value ) == &amp;#039;string&amp;#039; and value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			table.insert( liste, key .. &amp;#039;=&amp;#039; .. mw.uri.encode( prefix .. value ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- norme du COinS&lt;br /&gt;
	insertList( &amp;#039;ctx_ver&amp;#039;, &amp;#039;Z39.88-2004&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- genre, titre et sous-titre&lt;br /&gt;
	if genre == &amp;#039;article&amp;#039; then&lt;br /&gt;
		insertList( &amp;#039;rft_val_fmt&amp;#039;, &amp;#039;info:ofi/fmt:kev:mtx:journal&amp;#039; )&lt;br /&gt;
		insertList( &amp;#039;rft.genre&amp;#039;, &amp;#039;article&amp;#039; )&lt;br /&gt;
		insertList( &amp;#039;rft.atitle&amp;#039;, nettoyageTexte( args.titre ) )&lt;br /&gt;
		insertList( &amp;#039;rft.jtitle&amp;#039;, nettoyageTexte( validArg( &amp;#039;périodique&amp;#039;, &amp;#039;revue&amp;#039;, &amp;#039;journal&amp;#039; ) ) )&lt;br /&gt;
		insertList( &amp;#039;rft.issue&amp;#039;, validArg( &amp;#039;numéro&amp;#039;, &amp;#039;no&amp;#039;, &amp;#039;issue&amp;#039; ) )&lt;br /&gt;
	else&lt;br /&gt;
		-- genre = ouvrage ou chaitre&lt;br /&gt;
		insertList( &amp;#039;rft_val_fmt&amp;#039;,&amp;#039;info:ofi/fmt:kev:mtx:book&amp;#039; )&lt;br /&gt;
		if genre == &amp;#039;chapitre&amp;#039; then&lt;br /&gt;
			insertList( &amp;#039;rft.genre&amp;#039;, &amp;#039;bookitem&amp;#039; )&lt;br /&gt;
		else&lt;br /&gt;
			insertList( &amp;#039;rft.genre&amp;#039;, &amp;#039;book&amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		insertList( &amp;#039;rft.btitle&amp;#039;, nettoyageTexte( args.titre ) )&lt;br /&gt;
		insertList( &amp;#039;rft.atitle&amp;#039;, nettoyageTexte( validArg( &amp;#039;titre chapitre&amp;#039;, &amp;#039;titreChap&amp;#039; ) ) )&lt;br /&gt;
		&lt;br /&gt;
		-- donnée sur l&amp;#039;éditeur&lt;br /&gt;
		insertList( &amp;#039;rft.place&amp;#039;, Outils.texteLien( validArg( &amp;#039;lieu&amp;#039;, &amp;#039;location&amp;#039; ) ), nil )&lt;br /&gt;
		insertList( &amp;#039;rft.pub&amp;#039;, Outils.texteLien( validArg( &amp;#039;éditeur&amp;#039;, &amp;#039;édition&amp;#039; ) ), nil )&lt;br /&gt;
		insertList( &amp;#039;rft.edition&amp;#039;, args[&amp;quot;numéro d&amp;#039;édition&amp;quot;] )&lt;br /&gt;
	end&lt;br /&gt;
	insertList( &amp;#039;rft.stitle&amp;#039;, args[&amp;#039;sous-titre&amp;#039;] )&lt;br /&gt;
	&lt;br /&gt;
	-- Premier auteur, séparé en noms et prénoms&lt;br /&gt;
	local nom = Outils.texteLien( validArg( &amp;#039;nom1&amp;#039;, &amp;#039;nom&amp;#039;, &amp;#039;last1&amp;#039;, &amp;#039;last&amp;#039; ) )&lt;br /&gt;
	if nom then&lt;br /&gt;
		insertList( &amp;#039;rft.aulast&amp;#039;, nom )&lt;br /&gt;
		insertList( &amp;#039;rft.aufirst&amp;#039;, validArg( &amp;#039;prénom1&amp;#039;, &amp;#039;prénom&amp;#039;, &amp;#039;first1&amp;#039;, &amp;#039;first&amp;#039; ) )&lt;br /&gt;
		insertList( &amp;#039;rtf.ausuffix &amp;#039;, validArg( &amp;#039;postnom1&amp;#039;, &amp;#039;postnom&amp;#039; ) )&lt;br /&gt;
	else&lt;br /&gt;
		local auteur = Outils.texteLien( validArg( &amp;#039;auteur&amp;#039;, &amp;#039;auteur1&amp;#039; ) )&lt;br /&gt;
		if auteur then &lt;br /&gt;
			insertList( &amp;#039;rft.au&amp;#039;, auteur )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- les autres auteurs, la norme ne prévoit pas de séparation&lt;br /&gt;
	for i = 2, 20 do&lt;br /&gt;
		local nom_i = Outils.texteLien( validArg( &amp;#039;nom&amp;#039; .. i ) )&lt;br /&gt;
		if nom_i then&lt;br /&gt;
			local prenom_i = validArg( &amp;#039;prénom&amp;#039; .. i )&lt;br /&gt;
			local postnom_i = validArg( &amp;#039;postnom&amp;#039; .. i)&lt;br /&gt;
			if prenom_i and postnom_i then &lt;br /&gt;
				insertList( &amp;#039;rft.au&amp;#039;, nom_i .. &amp;#039; &amp;#039; .. postnom_i .. &amp;#039;, &amp;#039; .. prenom_i )&lt;br /&gt;
			elseif prenom_i then&lt;br /&gt;
				insertList( &amp;#039;rft.au&amp;#039;, nom_i .. &amp;#039;, &amp;#039; .. prenom_i )&lt;br /&gt;
			elseif postnom_i then&lt;br /&gt;
				insertList( &amp;#039;rft.au&amp;#039;, nom_i .. &amp;#039; &amp;#039; .. postnom_i )&lt;br /&gt;
			else&lt;br /&gt;
				insertList( &amp;#039;rft.au&amp;#039;, nom_i )&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local auteur_i = Outils.texteLien( validArg( &amp;#039;auteur&amp;#039; .. i ) )&lt;br /&gt;
			if auteur_i then&lt;br /&gt;
				insertList( &amp;#039;rft.au&amp;#039;, auteur_i )&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if validArg( &amp;#039;auteur institutionnel&amp;#039; ) then&lt;br /&gt;
		insertList( &amp;#039;rft.aucorp&amp;#039;, args[&amp;#039;auteur institutionnel&amp;#039;] )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- date&lt;br /&gt;
	local datePub = Date.dateISO( args )&lt;br /&gt;
	if datePub then &lt;br /&gt;
		insertList( &amp;#039;rft.date&amp;#039;, datePub )&lt;br /&gt;
	else&lt;br /&gt;
		insertList( &amp;#039;rft.date&amp;#039;, args.date )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- doonées physique de la publication&lt;br /&gt;
	insertList( &amp;#039;rft.volume&amp;#039;, validArg( &amp;#039;volume&amp;#039;, &amp;#039;vol&amp;#039; ) )&lt;br /&gt;
	insertList( &amp;#039;rft.pages&amp;#039;, validArg( &amp;#039;passage&amp;#039;, &amp;#039;page&amp;#039; ) )&lt;br /&gt;
	insertList( &amp;#039;rft.spage&amp;#039;, args[&amp;#039;page début chapitre&amp;#039;] )&lt;br /&gt;
	insertList( &amp;#039;rft.tpages&amp;#039;, args[&amp;#039;pages totales&amp;#039;] )&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	-- références internationales&lt;br /&gt;
	insertList( &amp;#039;rft.isbn&amp;#039;, args.isbn )&lt;br /&gt;
	insertList( &amp;#039;rft.issn&amp;#039;, args.issn )&lt;br /&gt;
	insertList( &amp;#039;rft_id&amp;#039;, args.doi, &amp;#039;info:doi/&amp;#039; )&lt;br /&gt;
	insertList( &amp;#039;rft_id&amp;#039;, args.pmid, &amp;#039;info:pmid/&amp;#039; )&lt;br /&gt;
	insertList( &amp;#039;rft_id&amp;#039;, args.oclc, &amp;#039;info:oclcnum/&amp;#039; )&lt;br /&gt;
	insertList( &amp;#039;rft_id&amp;#039;, args.url )&lt;br /&gt;
	&lt;br /&gt;
	-- referer : page Wikipedia ou se trouve cette référence&lt;br /&gt;
	insertList( &amp;#039;rfr_id&amp;#039;, &amp;#039;fr.wikipedia.org:&amp;#039; .. mw.title.getCurrentTitle().fullText, &amp;#039;info:sid/&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	local contextObject = table.concat( liste, &amp;#039;&amp;amp;&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- calcul d&amp;#039;un id pour que le span vide ne soit pas supprimé par tydy ( cf. https://bugzilla.wikimedia.org/show_bug.cgi?id=27786 )&lt;br /&gt;
	local id=0&lt;br /&gt;
	for i = 1, #contextObject do &lt;br /&gt;
		id = id + string.byte( contextObject, i )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &amp;#039;&amp;lt;span class=&amp;quot;Z3988&amp;quot; title=&amp;quot;&amp;#039; .. contextObject .. &amp;#039;&amp;quot; id=&amp;quot;COinS_&amp;#039; .. id ..&amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- voir Modèle:Module biblio/indication de langue&lt;br /&gt;
-- la langue est passée en patamètre &lt;br /&gt;
function Commun.indicationDeLangue2( args, validArg, lang )&lt;br /&gt;
	if lang then&lt;br /&gt;
		Langue = require( &amp;#039;Module:Langue&amp;#039; )&lt;br /&gt;
 &lt;br /&gt;
		-- on essai le code de langue comlet (nécessaire pour les langues avec plusieurs mot comme &amp;quot;grec ancien&amp;quot;)&lt;br /&gt;
		local codeLangue = Langue.codeLangue2( lang )&lt;br /&gt;
		if codeLangue ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			if codeLangue == &amp;#039;fr&amp;#039; then&lt;br /&gt;
				return &amp;#039;&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				return Langue.indicationMultilingue{ codeLangue }, codeLangue&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
 &lt;br /&gt;
		-- si la langue n&amp;#039;a pas été trouvé on considère qu&amp;#039;il y a plusieurs langues&lt;br /&gt;
		-- séparation des langues s&amp;#039;il y en a plusieurs&lt;br /&gt;
		local listeLangue = mw.text.split( lang, &amp;#039;[+,;:/ %.]+&amp;#039; )&lt;br /&gt;
 &lt;br /&gt;
		-- code langue principal qui sera appliqué aux titres&lt;br /&gt;
		codeLangue = Langue.codeLangue2( listeLangue[1] )&lt;br /&gt;
 &lt;br /&gt;
		if codeLangue == &amp;#039;&amp;#039; then&lt;br /&gt;
			return Langue.indicationMultilingue( listeLangue ), nil, true&lt;br /&gt;
		else&lt;br /&gt;
			-- cacul code de langue et catégorie&lt;br /&gt;
			local indicadionLangue = Langue.indicationMultilingue( listeLangue )&lt;br /&gt;
			local categLangue = string.find ( indicadionLangue, &amp;#039;???&amp;#039; , 1, true )&lt;br /&gt;
 &lt;br /&gt;
			if codeLangue ~= &amp;#039;fr&amp;#039; then&lt;br /&gt;
				return indicadionLangue, codeLangue, categLangue&lt;br /&gt;
			elseif #listeLangue &amp;gt; 1 then&lt;br /&gt;
				return indicadionLangue, codeLangue, categLangue&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return Commun&lt;/div&gt;</summary>
		<author><name>LIMAFOX76</name></author>
	</entry>
</feed>