<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://baripedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangue%2FTest</id>
	<title>Module:Langue/Test - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://baripedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangue%2FTest"/>
	<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Langue/Test&amp;action=history"/>
	<updated>2026-05-05T23:05:25Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.38.6</generator>
	<entry>
		<id>https://baripedia.org/index.php?title=Module:Langue/Test&amp;diff=7561&amp;oldid=prev</id>
		<title>Arthur : 1 version</title>
		<link rel="alternate" type="text/html" href="https://baripedia.org/index.php?title=Module:Langue/Test&amp;diff=7561&amp;oldid=prev"/>
		<updated>2014-01-13T22:01:22Z</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'erreur.&lt;br /&gt;
local dataLangue&lt;br /&gt;
local success, resultat = pcall (mw.loadData, 'Module:Langue/Data/Test' )&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 = 'en', nom = anglais }, &lt;br /&gt;
        fr = { code = 'fr', nom = 'français' },&lt;br /&gt;
        de = { code = 'de', nom = 'allemand' }, &lt;br /&gt;
        es = { code = 'es', nom = 'espagnol' },&lt;br /&gt;
        it = { code = 'it', nom = 'italien'  }, &lt;br /&gt;
        la = { code = 'la', nom = 'latin'    },&lt;br /&gt;
        ['rtl script'] = { Arab = true } &lt;br /&gt;
    }&lt;br /&gt;
    dataLangue.anglais = dataLangue.en&lt;br /&gt;
    dataLangue['français'] = 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'intérieur d'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 ) == 'table' 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 ) == 'string' then&lt;br /&gt;
        arg = frame&lt;br /&gt;
    end&lt;br /&gt;
    if type( arg ) ~= 'string' 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'est pas reconnu, retourne nil.&lt;br /&gt;
function Langue.determinationCode( langue )&lt;br /&gt;
	if type( langue ) == 'string' and langue ~= '' then&lt;br /&gt;
		local tabCode = mw.text.split( langue, '-' )&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;
	        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, '-' ) ) or arg or ''&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, '-' ) ) or ''&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 ) ~= 'string' or arg == '' then&lt;br /&gt;
        return 'ltr'&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[ 'rtl script' ] then&lt;br /&gt;
    		-- il y a un subcode d'écritrure, c'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[ 'rtl script' ][ codeScript ] then&lt;br /&gt;
	            return 'rtl'&lt;br /&gt;
	        end&lt;br /&gt;
	    else&lt;br /&gt;
	    	-- il n'y a pas de sub-code d'é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 'rtl' &lt;br /&gt;
            end&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- la langue n'est pas écrite de droite à gauche, donc ltr.&lt;br /&gt;
    return 'ltr'&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 ) ~= 'string' or arg == '' then &lt;br /&gt;
        return '&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;langue non précisée&amp;lt;/span&amp;gt;'&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, '^(%a-)%-' ) ]&lt;br /&gt;
    end&lt;br /&gt;
    if tabLangue then&lt;br /&gt;
        local nom&lt;br /&gt;
        if type( tabLangue.page ) == 'string' then&lt;br /&gt;
            nom = tabLangue.page .. '|' .. tabLangue.nom&lt;br /&gt;
        else&lt;br /&gt;
            nom = tabLangue.nom&lt;br /&gt;
        end&lt;br /&gt;
        return '[[' .. nom .. ']]'&lt;br /&gt;
    else&lt;br /&gt;
        return '&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;langue non reconnue : ' .. arg .. ' &amp;lt;/span&amp;gt;'&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 '' ) )&lt;br /&gt;
    local texte = args.texte or ''&lt;br /&gt;
    if texte == '' then&lt;br /&gt;
        texte = args[2] or ''&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 == 'ltr' or code == 'rtl' then&lt;br /&gt;
        dir = code&lt;br /&gt;
        code = mw.ustring.lower( mw.text.trim( args[2] ) or '' )&lt;br /&gt;
        texte = args[3] or ''&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, '-' )&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'écriture (len = 4) on applique sa direction&lt;br /&gt;
        if codeScript and  string.len( codeScript ) == 4 and dataLangue[ 'rtl script' ] then&lt;br /&gt;
        	-- formatage type Latn correspondant au fromat dans dataLangue[ 'rtl script' ]&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[ 'rtl script' ][ 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 '')&lt;br /&gt;
    if dir == 'ltr' or dir == 'rtl' then&lt;br /&gt;
        dir = ' dir=' .. dir&lt;br /&gt;
    else&lt;br /&gt;
        dir = (tabLangue and tabLangue.rtl and ' dir=rtl') or ''&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Transliteration.&lt;br /&gt;
    if trans and trans ~= '' then&lt;br /&gt;
        trans = ' (&amp;lt;span class=&amp;quot;lang-' .. code .. ' transcription&amp;quot; lang=&amp;quot;' .. code .. '-Latn&amp;quot;'&lt;br /&gt;
            .. ' dir=&amp;quot;ltr&amp;quot;&amp;gt;' .. trans .. '&amp;lt;/span&amp;gt;)'&lt;br /&gt;
    else&lt;br /&gt;
        trans = ''&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Compilation du texte à retourner.&lt;br /&gt;
    local wikiText = ''&lt;br /&gt;
    if code == '' then&lt;br /&gt;
        wikiText = texte&lt;br /&gt;
    else&lt;br /&gt;
        wikiText = '&amp;lt;span class=&amp;quot;lang-' .. code .. '&amp;quot; lang=&amp;quot;' .. code .. '&amp;quot;'&lt;br /&gt;
             .. dir .. '&amp;gt;' .. texte .. '&amp;lt;/span&amp;gt;' .. 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 ) ~= 'table' or tabLangue.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 == '' then&lt;br /&gt;
        		codeArg = ' ' 	-- sinon la catégorie n'est pas wikifiée&lt;br /&gt;
			end&lt;br /&gt;
            wikiText = wikiText .. '[[Catégorie:Page avec code de langue invalide|' .. codeArg .. ']]'&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 ''&lt;br /&gt;
    local code = args.langue or mw.text.trim( args[2] or '' )&lt;br /&gt;
    local texte = args.texte&lt;br /&gt;
    local dir = args.dir&lt;br /&gt;
    local wikiText = ''&lt;br /&gt;
    -- Cas ou le premier et/ou le deuxième paramètre est vide.&lt;br /&gt;
    if code .. nomLangue == '' then&lt;br /&gt;
        return texte&lt;br /&gt;
    elseif nomLangue == '' then&lt;br /&gt;
        nomLangue = dataLangue[ mw.ustring.lower( code ) ]&lt;br /&gt;
        nomLangue = (nomLangue and nomLangue.nom or '???')&lt;br /&gt;
    elseif code == '' then&lt;br /&gt;
        code = dataLangue[ nomLangue ]&lt;br /&gt;
        code = ( code and code.code or '' )&lt;br /&gt;
        if code == '' 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 ~= '' then&lt;br /&gt;
        texte = '&amp;amp;nbsp;' .. Langue.lang{ code, dir = dir, texte = texte }&lt;br /&gt;
    else&lt;br /&gt;
        texte = ''&lt;br /&gt;
    end&lt;br /&gt;
    -- Compilation de l'indicateur de langue et du texte.&lt;br /&gt;
    wikiText = '&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 : '&lt;br /&gt;
        .. nomLangue .. '&amp;quot;&amp;gt;'&lt;br /&gt;
        .. code .. '&amp;lt;/abbr&amp;gt;)&amp;lt;/span&amp;gt;'&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 = 'mul'.&lt;br /&gt;
    local code = mw.text.trim( args[1] or '' )&lt;br /&gt;
    if code == '' then&lt;br /&gt;
        code = 'mul'&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, '-' )[1]&lt;br /&gt;
        tabLangue = dataLangue[ mw.ustring.lower( code ) ]&lt;br /&gt;
        if type( tabLangue ) == 'table' 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, '???' )&lt;br /&gt;
            local erreur = ' &amp;lt;span style=&amp;quot;color:red; font-size:120%;&amp;quot;&amp;gt;langue non reconnue : ' &lt;br /&gt;
                .. code .. ' &amp;lt;/span&amp;gt;'&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 '' )&lt;br /&gt;
    until code == ''&lt;br /&gt;
    &lt;br /&gt;
    -- Préparation et renvoie du texte.&lt;br /&gt;
    local n = #listeCode&lt;br /&gt;
    local pluriel = ''&lt;br /&gt;
    if n == 0 then&lt;br /&gt;
        return ''&lt;br /&gt;
    elseif n &amp;gt; 1 then&lt;br /&gt;
        pluriel = 's'&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local wikiText = '&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' .. pluriel .. ' : '&lt;br /&gt;
        .. mw.text.listToText( listeNom ) .. '&amp;quot;&amp;gt;'&lt;br /&gt;
        .. table.concat( listeCode, '+' ) .. '&amp;lt;/abbr&amp;gt;)&amp;lt;/span&amp;gt;'&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 '') )&lt;br /&gt;
    local texte = args.texte or args[2] or ''&lt;br /&gt;
    local trans = args.trans&lt;br /&gt;
    local dir = args.dir&lt;br /&gt;
    local wikiText = ''&lt;br /&gt;
&lt;br /&gt;
    -- Détection de la direction du texte.&lt;br /&gt;
    if code == 'ltr' or code == 'rtl' 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 ''&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 ~= '' then&lt;br /&gt;
        texte = '&amp;amp;nbsp;' .. Langue.lang{ code, dir = dir, texte = texte, trans = trans }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    wikiText = nom .. ' :' .. 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'un message d'erreur si le Module:Langue/Data n'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'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 ) ~= 'table' 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 '',&lt;br /&gt;
                v.rtl and '[[Image:Yes check.svg|15px|oui|lien=]]' or '',&lt;br /&gt;
                v.invalide and '[[Image:Yes check.svg|15px|oui|lien=]]' or '',&lt;br /&gt;
            }&lt;br /&gt;
            ligneSrt = table.concat( ligneTab, '\n|' )&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, '}' )&lt;br /&gt;
    &lt;br /&gt;
    return table.concat( tableau, '\n|-\n|' )&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 ) ~= 'table' 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, ', ' )&lt;br /&gt;
        if alias == '' then&lt;br /&gt;
            codeAlias = '\n* &amp;lt;code&amp;gt;' .. i .. '&amp;lt;/code&amp;gt;'&lt;br /&gt;
        else&lt;br /&gt;
            codeAlias = '\n* &amp;lt;code&amp;gt;' .. i .. '&amp;lt;/code&amp;gt; : ' .. 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 ) ~= 'table' then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local languesTab = { '' }&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 .. ' = ' .. 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, '\n*' )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return Langue&lt;/div&gt;</summary>
		<author><name>Arthur</name></author>
	</entry>
</feed>