<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://fr.sarkarverse.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangue</id>
	<title>Module:Langue - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://fr.sarkarverse.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangue"/>
	<link rel="alternate" type="text/html" href="https://fr.sarkarverse.org/index.php?title=Module:Langue&amp;action=history"/>
	<updated>2026-05-11T12:45:10Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://fr.sarkarverse.org/index.php?title=Module:Langue&amp;diff=73&amp;oldid=prev</id>
		<title>imported&gt;T12 : 1 version</title>
		<link rel="alternate" type="text/html" href="https://fr.sarkarverse.org/index.php?title=Module:Langue&amp;diff=73&amp;oldid=prev"/>
		<updated>2013-12-16T05:53:56Z</updated>

		<summary type="html">&lt;p&gt;1 version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Langue = { }&lt;br /&gt;
&lt;br /&gt;
-- Chargement du de la base de donnée des langues avec gestion d&amp;#039;erreur.&lt;br /&gt;
local dataLangue&lt;br /&gt;
local success, resultat = pcall (mw.loadData, &amp;#039;Module:Langue/Data&amp;#039; )&lt;br /&gt;
if success then&lt;br /&gt;
    dataLangue = resultat&lt;br /&gt;
else&lt;br /&gt;
    -- Base de donnée à minima en cas de bug sur le Module:Langue/Data&lt;br /&gt;
    dataLangue = { en = { code = &amp;#039;en&amp;#039;, nom = anglais }, &lt;br /&gt;
        fr = { code = &amp;#039;fr&amp;#039;, nom = &amp;#039;français&amp;#039; },&lt;br /&gt;
        de = { code = &amp;#039;de&amp;#039;, nom = &amp;#039;allemand&amp;#039; }, &lt;br /&gt;
        es = { code = &amp;#039;es&amp;#039;, nom = &amp;#039;espagnol&amp;#039; },&lt;br /&gt;
        it = { code = &amp;#039;it&amp;#039;, nom = &amp;#039;italien&amp;#039;  }, &lt;br /&gt;
        la = { code = &amp;#039;la&amp;#039;, nom = &amp;#039;latin&amp;#039;    },&lt;br /&gt;
        [&amp;#039;rtl script&amp;#039;] = { Arab = true } &lt;br /&gt;
    }&lt;br /&gt;
    dataLangue.anglais = dataLangue.en&lt;br /&gt;
    dataLangue[&amp;#039;français&amp;#039;] = dataLangue.fr&lt;br /&gt;
    dataLangue.allemand = dataLangue.de&lt;br /&gt;
    dataLangue.espagnol = dataLangue.es&lt;br /&gt;
    dataLangue.italien = dataLangue.it&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle, &lt;br /&gt;
-- ou à l&amp;#039;intérieur d&amp;#039;un module sous forme de string dans un tableau ou directement de string.&lt;br /&gt;
-- Si aucun de ces argument ne contient de chaine, la fonction renvoie nil.&lt;br /&gt;
-- Si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule.&lt;br /&gt;
local function premierParametre( frame, lowerCase )&lt;br /&gt;
    local arg&lt;br /&gt;
    if type( frame ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
        arg = ( frame.getParent and ( frame.args[1] or frame:getParent().args[1] ) ) or frame[1]&lt;br /&gt;
    elseif type( frame ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
        arg = frame&lt;br /&gt;
    end&lt;br /&gt;
    if type( arg ) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
        arg = nil&lt;br /&gt;
    end&lt;br /&gt;
    if arg and lowerCase then&lt;br /&gt;
        arg = mw.ustring.lower( mw.text.trim ( arg ) )&lt;br /&gt;
    end&lt;br /&gt;
    return arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- determinationCode retourne une table contenant le code de langue principal et la liste des subcode&lt;br /&gt;
-- si le code de langue principal n&amp;#039;est pas reconnu, retourne nil.&lt;br /&gt;
function Langue.determinationCode( langue )&lt;br /&gt;
	if type( langue ) == &amp;#039;string&amp;#039; and langue ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		local tabCode = mw.text.split( langue, &amp;#039;-&amp;#039; )&lt;br /&gt;
		local tabLangue = dataLangue[ mw.ustring.lower( tabCode[1] ) ]&lt;br /&gt;
		if tabLangue and tabLangue.code then&lt;br /&gt;
			tabCode[1] = tabLangue.code&lt;br /&gt;
			if tabLangue.invalide then&lt;br /&gt;
				tabCode.invalide=true&lt;br /&gt;
			end&lt;br /&gt;
	        return tabCode&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Code langue&lt;br /&gt;
-- Paramètre : &lt;br /&gt;
--     1  : nom de langue.&lt;br /&gt;
function Langue.codeLangue( frame )&lt;br /&gt;
    local arg = premierParametre( frame, true )&lt;br /&gt;
    local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
    return ( tabCode and table.concat( tabCode, &amp;#039;-&amp;#039; ) ) or arg or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Code langue 2&lt;br /&gt;
-- Paramètre : &lt;br /&gt;
--     1  : nom de langue.&lt;br /&gt;
function Langue.codeLangue2( frame )&lt;br /&gt;
    local arg = premierParametre( frame, true )&lt;br /&gt;
    local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
    return ( tabCode and table.concat( tabCode, &amp;#039;-&amp;#039; ) ) or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Direction langue&lt;br /&gt;
-- Paramètre : &lt;br /&gt;
--     1  : nom de langue ou code IETF.&lt;br /&gt;
function Langue.directionLangue( frame )&lt;br /&gt;
    local arg = premierParametre( frame, true )&lt;br /&gt;
    if type( arg ) ~= &amp;#039;string&amp;#039; or arg == &amp;#039;&amp;#039; then&lt;br /&gt;
        return &amp;#039;ltr&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    -- séparation du code de langue en code principal et les différent subcode.&lt;br /&gt;
    local tabCode = Langue.determinationCode( arg )&lt;br /&gt;
    if tabCode then&lt;br /&gt;
    	-- on essaye de savoir si la direction est de droite à gauche&lt;br /&gt;
    	local codeScript = tabCode[2]&lt;br /&gt;
    	if codeScript and string.len( codeScript ) == 4 and dataLangue[ &amp;#039;rtl script&amp;#039; ] then&lt;br /&gt;
    		-- il y a un subcode d&amp;#039;écritrure, c&amp;#039;est lui qui est pris en compte&lt;br /&gt;
			codeScript = string.upper( string.sub( codeScript, 1, 1 ) ) .. string.sub( codeScript, 2 )&lt;br /&gt;
	        if dataLangue[ &amp;#039;rtl script&amp;#039; ][ codeScript ] then&lt;br /&gt;
	            return &amp;#039;rtl&amp;#039;&lt;br /&gt;
	        end&lt;br /&gt;
	    else&lt;br /&gt;
	    	-- il n&amp;#039;y a pas de sub-code d&amp;#039;écriture, on prend en compte le code de langue principal.&lt;br /&gt;
	    	local tabLangue = dataLangue[ tabCode[1] ]&lt;br /&gt;
	    	if tabLangue and tabLangue.rtl then&lt;br /&gt;
                return &amp;#039;rtl&amp;#039; &lt;br /&gt;
            end&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- la langue n&amp;#039;est pas écrite de droite à gauche, donc ltr.&lt;br /&gt;
    return &amp;#039;ltr&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Nom langue&lt;br /&gt;
-- Paramètre : &lt;br /&gt;
--     1  : code IETF de langue.&lt;br /&gt;
function Langue.nomLangue( frame )&lt;br /&gt;
    local arg = premierParametre( frame, true )&lt;br /&gt;
    if type( arg ) ~= &amp;#039;string&amp;#039; or arg == &amp;#039;&amp;#039; then &lt;br /&gt;
        return &amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;langue non précisée&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    local tabLangue = dataLangue[ arg ]&lt;br /&gt;
    if tabLangue == nil then&lt;br /&gt;
        tabLangue = dataLangue[ mw.ustring.match( arg, &amp;#039;^(%a-)%-&amp;#039; ) ]&lt;br /&gt;
    end&lt;br /&gt;
    if tabLangue then&lt;br /&gt;
        local nom&lt;br /&gt;
        if type( tabLangue.page ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
            nom = tabLangue.page .. &amp;#039;|&amp;#039; .. tabLangue.nom&lt;br /&gt;
        else&lt;br /&gt;
            nom = tabLangue.nom&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;#039;[[&amp;#039; .. nom .. &amp;#039;]]&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;langue non reconnue : &amp;#039; .. arg .. &amp;#039; &amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Lang&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : code IETF de langue,&lt;br /&gt;
--    texte ou 2 : texte dans cette langue,&lt;br /&gt;
--    trans : translitération du texte,&lt;br /&gt;
--    dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3).&lt;br /&gt;
function Langue.lang( frame )&lt;br /&gt;
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }         -- préparation pour appel par modèle ou direct.&lt;br /&gt;
    local code = mw.ustring.lower( mw.text.trim( args[1] or &amp;#039;&amp;#039; ) )&lt;br /&gt;
    local texte = args.texte or &amp;#039;&amp;#039;&lt;br /&gt;
    if texte == &amp;#039;&amp;#039; then&lt;br /&gt;
        texte = args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    local dir = args.dir&lt;br /&gt;
    local trans = args.trans&lt;br /&gt;
    &lt;br /&gt;
    -- Décalage des paramètres si code contient la direction du texte (obsolete mais toujours possible).&lt;br /&gt;
    if code == &amp;#039;ltr&amp;#039; or code == &amp;#039;rtl&amp;#039; then&lt;br /&gt;
        dir = code&lt;br /&gt;
        code = mw.ustring.lower( mw.text.trim( args[2] ) or &amp;#039;&amp;#039; )&lt;br /&gt;
        texte = args[3] or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    local codeArg = code&lt;br /&gt;
    &lt;br /&gt;
    -- Si la langue est reconnue, la valeur de la table est prise en compte (permet de corrigé les noms de langue en toute lettre). &lt;br /&gt;
    local tabCode = Langue.determinationCode( code )&lt;br /&gt;
    local tabLangue&lt;br /&gt;
    if tabCode then&lt;br /&gt;
    	code = table.concat( tabCode, &amp;#039;-&amp;#039; )&lt;br /&gt;
    	tabLangue = dataLangue[ tabCode[1] ]&lt;br /&gt;
    	&lt;br /&gt;
    	local codeScript = tabCode[2]&lt;br /&gt;
    	-- Si codeScript est bien un style d&amp;#039;écriture (len = 4) on applique sa direction&lt;br /&gt;
        if codeScript and  string.len( codeScript ) == 4 and dataLangue[ &amp;#039;rtl script&amp;#039; ] then&lt;br /&gt;
        	-- formatage type Latn correspondant au fromat dans dataLangue[ &amp;#039;rtl script&amp;#039; ]&lt;br /&gt;
            codeScript = string.upper( string.sub(  codeScript, 1, 1 ) ) .. string.sub(  codeScript, 2 )&lt;br /&gt;
            tabLangue = { code = tabLangue.code,&lt;br /&gt;
                rtl = dataLangue[ &amp;#039;rtl script&amp;#039; ][ codeScript ],&lt;br /&gt;
                invalide = tabLangue.invalide&lt;br /&gt;
            }&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    	&lt;br /&gt;
    -- Prépatation du rendu de direction du texte.&lt;br /&gt;
    dir = mw.ustring.lower(dir or &amp;#039;&amp;#039;)&lt;br /&gt;
    if dir == &amp;#039;ltr&amp;#039; or dir == &amp;#039;rtl&amp;#039; then&lt;br /&gt;
        dir = &amp;#039; dir=&amp;#039; .. dir&lt;br /&gt;
    else&lt;br /&gt;
        dir = (tabLangue and tabLangue.rtl and &amp;#039; dir=rtl&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Transliteration.&lt;br /&gt;
    if trans and trans ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        trans = &amp;#039; (&amp;lt;span class=&amp;quot;lang-&amp;#039; .. code .. &amp;#039; transcription&amp;quot; lang=&amp;quot;&amp;#039; .. code .. &amp;#039;-Latn&amp;quot;&amp;#039;&lt;br /&gt;
            .. &amp;#039; dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;#039; .. trans .. &amp;#039;&amp;lt;/span&amp;gt;)&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        trans = &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Compilation du texte à retourner.&lt;br /&gt;
    local wikiText = &amp;#039;&amp;#039;&lt;br /&gt;
    if code == &amp;#039;&amp;#039; then&lt;br /&gt;
        wikiText = texte&lt;br /&gt;
    else&lt;br /&gt;
        wikiText = &amp;#039;&amp;lt;span class=&amp;quot;lang-&amp;#039; .. code .. &amp;#039;&amp;quot; lang=&amp;quot;&amp;#039; .. code .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
             .. dir .. &amp;#039;&amp;gt;&amp;#039; .. texte .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; .. trans&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide.&lt;br /&gt;
    if success and ( type( tabLangue ) ~= &amp;#039;table&amp;#039; or tabCode.invalide ) then&lt;br /&gt;
        local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }&lt;br /&gt;
        if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] then&lt;br /&gt;
        	if codeArg == &amp;#039;&amp;#039; then&lt;br /&gt;
        		codeArg = &amp;#039; &amp;#039; 	-- sinon la catégorie n&amp;#039;est pas wikifiée&lt;br /&gt;
			end&lt;br /&gt;
            wikiText = wikiText .. &amp;#039;[[Catégorie:Page avec code de langue invalide|&amp;#039; .. codeArg .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Langue&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : nom de langue ou code IETF,&lt;br /&gt;
--    texte ou 2 : texte dans cette langue,&lt;br /&gt;
--    trans : translitération du texte,&lt;br /&gt;
--    dir : direction de la langue.&lt;br /&gt;
function Langue.langue( frame )&lt;br /&gt;
    return Langue.lang( frame )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Indication de langue&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : nom de langue,&lt;br /&gt;
--    2 : code IETF,&lt;br /&gt;
--    texte : texte dans cette langue,&lt;br /&gt;
--    dir : direction de la langue.&lt;br /&gt;
function Langue.indicationDeLangue( frame )&lt;br /&gt;
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }&lt;br /&gt;
    local nomLangue = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
    local code = args.langue or mw.text.trim( args[2] or &amp;#039;&amp;#039; )&lt;br /&gt;
    local texte = args.texte&lt;br /&gt;
    local dir = args.dir&lt;br /&gt;
    local wikiText = &amp;#039;&amp;#039;&lt;br /&gt;
    -- Cas ou le premier et/ou le deuxième paramètre est vide.&lt;br /&gt;
    if code .. nomLangue == &amp;#039;&amp;#039; then&lt;br /&gt;
        return texte&lt;br /&gt;
    elseif nomLangue == &amp;#039;&amp;#039; then&lt;br /&gt;
        nomLangue = dataLangue[ mw.ustring.lower( code ) ]&lt;br /&gt;
        nomLangue = (nomLangue and nomLangue.nom or &amp;#039;???&amp;#039;)&lt;br /&gt;
    elseif code == &amp;#039;&amp;#039; then&lt;br /&gt;
        code = dataLangue[ nomLangue ]&lt;br /&gt;
        code = ( code and code.code or &amp;#039;&amp;#039; )&lt;br /&gt;
        if code == &amp;#039;&amp;#039; then&lt;br /&gt;
            return texte&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- Gestion du texte.&lt;br /&gt;
    if texte and texte ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        texte = &amp;#039;&amp;amp;nbsp;&amp;#039; .. Langue.lang{ code, dir = dir, texte = texte }&lt;br /&gt;
    else&lt;br /&gt;
        texte = &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    -- Compilation de l&amp;#039;indicateur de langue et du texte.&lt;br /&gt;
    wikiText = &amp;#039;&amp;lt;span class=&amp;quot;indicateur-langue&amp;quot;&amp;gt;(&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;Langue : &amp;#039;&lt;br /&gt;
        .. nomLangue .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
        .. code .. &amp;#039;&amp;lt;/abbr&amp;gt;)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        .. texte&lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Multiling&lt;br /&gt;
-- Paramètres : codes IETF ou noms de langue, en nombre indéfini. (string ou nil uniquement)&lt;br /&gt;
function Langue.indicationMultilingue( frame )&lt;br /&gt;
    local args = (frame.getParent and frame:getParent().args) or frame&lt;br /&gt;
    local listeNom = { }&lt;br /&gt;
    local listeCode = { }&lt;br /&gt;
    local tabLangue&lt;br /&gt;
    -- Valeur par défaut du premier paramètre = &amp;#039;mul&amp;#039;.&lt;br /&gt;
    local code = mw.text.trim( args[1] or &amp;#039;&amp;#039; )&lt;br /&gt;
    if code == &amp;#039;&amp;#039; then&lt;br /&gt;
        code = &amp;#039;mul&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode.&lt;br /&gt;
    local i = 1&lt;br /&gt;
    repeat&lt;br /&gt;
    	code = mw.text.split( code, &amp;#039;-&amp;#039; )[1]&lt;br /&gt;
        tabLangue = dataLangue[ mw.ustring.lower( code ) ]&lt;br /&gt;
        if type( tabLangue ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
            table.insert( listeNom, tabLangue.nom )&lt;br /&gt;
            table.insert( listeCode, tabLangue.code )&lt;br /&gt;
        else&lt;br /&gt;
            table.insert( listeNom, &amp;#039;???&amp;#039; )&lt;br /&gt;
            local erreur = &amp;#039; &amp;lt;span style=&amp;quot;color:red; font-size:120%;&amp;quot;&amp;gt;langue non reconnue : &amp;#039; &lt;br /&gt;
                .. code .. &amp;#039; &amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
            table.insert( listeCode, erreur )&lt;br /&gt;
        end&lt;br /&gt;
        i = i+1&lt;br /&gt;
        code = mw.text.trim( args[i] or &amp;#039;&amp;#039; )&lt;br /&gt;
    until code == &amp;#039;&amp;#039;&lt;br /&gt;
    &lt;br /&gt;
    -- Préparation et renvoie du texte.&lt;br /&gt;
    local n = #listeCode&lt;br /&gt;
    local pluriel = &amp;#039;&amp;#039;&lt;br /&gt;
    if n == 0 then&lt;br /&gt;
        return &amp;#039;&amp;#039;&lt;br /&gt;
    elseif n &amp;gt; 1 then&lt;br /&gt;
        pluriel = &amp;#039;s&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local wikiText = &amp;#039;&amp;lt;span class=&amp;quot;indicateur-langue&amp;quot;&amp;gt;(&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;Langue&amp;#039; .. pluriel .. &amp;#039; : &amp;#039;&lt;br /&gt;
        .. mw.text.listToText( listeNom ) .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
        .. table.concat( listeCode, &amp;#039;+&amp;#039; ) .. &amp;#039;&amp;lt;/abbr&amp;gt;)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
        &lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Voir Modèle:Langue avec nom&lt;br /&gt;
-- Paramètres :&lt;br /&gt;
--    1 : code IETF de langue,&lt;br /&gt;
--    texte ou 2 : texte dans cette langue,&lt;br /&gt;
--    trans : translitération du texte,&lt;br /&gt;
--    dir : direction de la langue.&lt;br /&gt;
function Langue.langueAvecNom( frame )&lt;br /&gt;
    local args = ( frame.getParent and frame:getParent().args ) or frame or { }&lt;br /&gt;
    local code = mw.ustring.lower( mw.text.trim( args [1] or &amp;#039;&amp;#039;) )&lt;br /&gt;
    local texte = args.texte or args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
    local trans = args.trans&lt;br /&gt;
    local dir = args.dir&lt;br /&gt;
    local wikiText = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    -- Détection de la direction du texte.&lt;br /&gt;
    if code == &amp;#039;ltr&amp;#039; or code == &amp;#039;rtl&amp;#039; then&lt;br /&gt;
        dir = code&lt;br /&gt;
        code = mw.ustring.lower( mw.text.trim( args[2] ) )&lt;br /&gt;
        texte = args[3] or &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Définition du nom de la langue en français.&lt;br /&gt;
    local nom = Langue.nomLangue{ code }&lt;br /&gt;
&lt;br /&gt;
    if texte ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        texte = &amp;#039;&amp;amp;nbsp;&amp;#039; .. Langue.lang{ code, dir = dir, texte = texte, trans = trans }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    wikiText = nom .. &amp;#039; :&amp;#039; .. texte&lt;br /&gt;
&lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- erreurModuleData affiche  d&amp;#039;un message d&amp;#039;erreur si le Module:Langue/Data n&amp;#039;a pas été chargé correctement,&lt;br /&gt;
-- pour la page de discussion de la base de donnée et ceux qui veulent surveiller cette page.&lt;br /&gt;
function Langue.erreurModuleData()&lt;br /&gt;
    if success == false then &lt;br /&gt;
        local message = [[&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Le chargement du module Langue/Data génère une erreur : &amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;%s&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Cette erreur doit être corrigée au plus vite car des milliers de page ne s&amp;#039;affichent pas correctement&amp;lt;/span&amp;gt;&lt;br /&gt;
]]&lt;br /&gt;
        return string.format( message, resultat )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- tableauLangues génère un tableau triable de la liste des langues disponible dans Module:langue/Data.&lt;br /&gt;
function Langue.tableauLangues()&lt;br /&gt;
    if type( dataLangue ) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tableau = { } &lt;br /&gt;
    local entete = [[{| class=&amp;quot;wikitable alternance sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=col|Alias&lt;br /&gt;
!scope=col|code IETF&lt;br /&gt;
!scope=col|Nom principal&lt;br /&gt;
!scope=col|Page (si différente du nom)&lt;br /&gt;
!scope=col|RTL&lt;br /&gt;
!scope=col|invalide]]&lt;br /&gt;
&lt;br /&gt;
    local ligneTab, ligneSrt&lt;br /&gt;
    for i, v in pairs( dataLangue ) do&lt;br /&gt;
        if v.code then&lt;br /&gt;
            ligneTab = {&lt;br /&gt;
                i,&lt;br /&gt;
                v.code,&lt;br /&gt;
                v.nom,&lt;br /&gt;
                v.page or &amp;#039;&amp;#039;,&lt;br /&gt;
                v.rtl and &amp;#039;[[Image:Yes check.svg|15px|oui|lien=]]&amp;#039; or &amp;#039;&amp;#039;,&lt;br /&gt;
                v.invalide and &amp;#039;[[Image:Yes check.svg|15px|oui|lien=]]&amp;#039; or &amp;#039;&amp;#039;,&lt;br /&gt;
            }&lt;br /&gt;
            ligneSrt = table.concat( ligneTab, &amp;#039;\n|&amp;#039; )&lt;br /&gt;
            table.insert( tableau, ligneSrt )&lt;br /&gt;
        end&lt;br /&gt;
    end   &lt;br /&gt;
    table.sort( tableau )&lt;br /&gt;
    table.insert( tableau, 1, entete )&lt;br /&gt;
    table.insert( tableau, &amp;#039;}&amp;#039; )&lt;br /&gt;
    &lt;br /&gt;
    return table.concat( tableau, &amp;#039;\n|-\n|&amp;#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- listeCodeAlias génére une liste les langues sont la forme :  * code : alias1, alias2&lt;br /&gt;
function Langue.listeCodeAlias ()&lt;br /&gt;
    if type( dataLangue ) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local languesTab, listeCodesAlias = { }, { }&lt;br /&gt;
    local code, alias, codeAlias&lt;br /&gt;
    for i, v in pairs( dataLangue ) do&lt;br /&gt;
        -- on construit un table avec pour indice les code de langue, et pour valeur une table avec la  liste des alias&lt;br /&gt;
        code = v.code&lt;br /&gt;
        if code then  &lt;br /&gt;
            languesTab[code] = languesTab[code] or { }&lt;br /&gt;
            if i ~= mw.ustring.lower( code ) then&lt;br /&gt;
                table.insert( languesTab[code], i )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for i, v in pairs( languesTab ) do&lt;br /&gt;
        -- transformation en un table séquence, avec pour valeur une chaine correspondant à une ligne de la liste&lt;br /&gt;
        alias = table.concat( v, &amp;#039;, &amp;#039; )&lt;br /&gt;
        if alias == &amp;#039;&amp;#039; then&lt;br /&gt;
            codeAlias = &amp;#039;\n* &amp;lt;code&amp;gt;&amp;#039; .. i .. &amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            codeAlias = &amp;#039;\n* &amp;lt;code&amp;gt;&amp;#039; .. i .. &amp;#039;&amp;lt;/code&amp;gt; : &amp;#039; .. alias&lt;br /&gt;
        end&lt;br /&gt;
        table.insert( listeCodesAlias, codeAlias )&lt;br /&gt;
    end&lt;br /&gt;
    table.sort( listeCodesAlias )&lt;br /&gt;
   &lt;br /&gt;
    return table.concat( listeCodesAlias )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- listeCodeAlias génére une liste les langues sont la forme :  * code : alias1, alias2&lt;br /&gt;
function Langue.listeAliasCode ()&lt;br /&gt;
    if type( dataLangue ) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local languesTab = { &amp;#039;&amp;#039; }&lt;br /&gt;
    local code&lt;br /&gt;
    for i, v in pairs( dataLangue ) do&lt;br /&gt;
        -- on construit un table avec pour indice les code de langue, et pour valeur une table avec la  liste des alias&lt;br /&gt;
        code = v.code&lt;br /&gt;
        if code and i ~= code then  &lt;br /&gt;
            table.insert( languesTab, i .. &amp;#039; = &amp;#039; .. code )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    table.sort( languesTab )&lt;br /&gt;
   &lt;br /&gt;
    return table.concat( languesTab, &amp;#039;\n*&amp;#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Langue&lt;/div&gt;</summary>
		<author><name>imported&gt;T12</name></author>
	</entry>
</feed>