« Module:Langue » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
m A protégé « Module:Langue » : Modèle très utilisé ([Modifier=Autoriser uniquement les utilisateurs auto-confirmés] (infini) [Renommer=Autoriser uniquement les utilisateurs auto-confirmés] (infini))
0x010D (discussion | contributions)
relecture (« que celui-ci ait été au module par invoke, directement au modèle, ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. » n'est pas très clair)
Ligne 3 : Ligne 3 :
     local datalangue = mw.loadData( 'Module:langue/Data' )
     local datalangue = mw.loadData( 'Module:langue/Data' )


-- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle,  
-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle,  
-- ou à l'intérieur d'un module sous forme de string dans un tableau ou direstement de string.
-- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string.
-- si aucun de ces argument ne contient de chaine, la fonction renvoi nil
-- si aucun de ces argument ne contient de chaîne, la fonction renvoie nil.
-- si le deuxième paramètre est true, la chaine est rendue trimé et en minuscule.
-- si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule.
local function premierParametre ( frame, lowerCase )
local function premierParametre ( frame, lowerCase )
     local arg
     local arg
Ligne 23 : Ligne 23 :
end
end


-- voir Modèle:Direction langue
-- voir Modèle:Direction langue.
function langue.directionLangue ( frame )
function langue.directionLangue ( frame )
     local arg = premierParametre ( frame, true )
     local arg = premierParametre ( frame, true )
Ligne 37 : Ligne 37 :
end
end


-- voir Modèle:Code langue
-- voir Modèle:Code langue.
function langue.codeLangue ( frame )
function langue.codeLangue ( frame )
     local arg = premierParametre ( frame, true )
     local arg = premierParametre ( frame, true )
Ligne 44 : Ligne 44 :
end
end


-- voir Modèle:Code langue 2
-- voir Modèle:Code langue 2.
function langue.codeLangue2 ( frame )
function langue.codeLangue2 ( frame )
     local arg = premierParametre ( frame, true )
     local arg = premierParametre ( frame, true )
Ligne 51 : Ligne 51 :
end
end


-- voir Modèle:Nom langue
-- voir Modèle:Nom langue.
function langue.nomLangue ( frame )
function langue.nomLangue ( frame )
     local arg = premierParametre ( frame, true )
     local arg = premierParametre ( frame, true )
Ligne 58 : Ligne 58 :
end
end


-- voir Modèle:Lang
-- voir Modèle:Lang.
function langue.lang ( frame )
function langue.lang ( frame )
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }        -- préparation pour appel par modèle ou direct.
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }        -- préparation pour appel par modèle ou direct.
Ligne 71 : Ligne 71 :
     end
     end


     -- détection de la direction du texte
     -- détection de la direction du texte.
     if code == 'ltr' or code == 'rtl' then
     if code == 'ltr' or code == 'rtl' then
         dir = code
         dir = code
Ligne 85 : Ligne 85 :
     end
     end


     -- transliteration
     -- transliteration.
     if trans and trans ~= '' then
     if trans and trans ~= '' then
         trans = ' (<span class="lang-' .. code
         trans = ' (<span class="lang-' .. code
Ligne 95 : Ligne 95 :
     end
     end


     -- compilation du texte à retourner
     -- compilation du texte à retourner.
     if code == '' then
     if code == '' then
         wikiText = texte
         wikiText = texte
Ligne 106 : Ligne 106 :
     end
     end


     -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide
     -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide.
     for i, v in ipairs( datalangue.dataCodeInvalide ) do
     for i, v in ipairs( datalangue.dataCodeInvalide ) do
         if code == v then
         if code == v then
Ligne 130 : Ligne 130 :
end
end


-- voir Modèle:Indication de langue
-- voir Modèle:Indication de langue.
function langue.indicationDeLangue ( frame )
function langue.indicationDeLangue ( frame )
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
Ligne 157 : Ligne 157 :
end
end


-- voir Modèle:Langue avec nom
-- voir Modèle:Langue avec nom.
function langue.langueAvecNom ( frame )
function langue.langueAvecNom ( frame )
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
     local args = ( frame.getParent and frame:getParent().args ) or frame or { }
Ligne 166 : Ligne 166 :
     local wikiText = ''
     local wikiText = ''


     -- détection de la direction du texte
     -- détection de la direction du texte.
     if code == 'ltr' or code == 'rtl' then
     if code == 'ltr' or code == 'rtl' then
         dir = code
         dir = code
Ligne 173 : Ligne 173 :
     end
     end
      
      
     -- définition du nom de la langue en français
     -- définition du nom de la langue en français.
     local nom = langue.nomLangue { code }
     local nom = langue.nomLangue { code }



Version du 12 août 2013 à 03:06

local langue = { }

   local datalangue = mw.loadData( 'Module:langue/Data' )

-- premierParametre renvoie le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle, -- ou à l'intérieur d'un module sous forme de string dans un tableau ou directement de string. -- si aucun de ces argument ne contient de chaîne, la fonction renvoie nil. -- si le deuxième paramètre est true, la chaine est renvoyée trimée et en minuscule. local function premierParametre ( frame, lowerCase )

   local arg
   if type ( frame ) == 'table' then
       arg = ( frame.getParent and ( frame.args [1] or frame:getParent().args [1] ) ) or frame [1]
   elseif type ( frame ) == 'string' then
       arg = frame
   end
   if type ( arg ) ~= 'string' then
       arg = nil
   end
   if arg and lowerCase then 
       arg = mw.ustring.lower ( mw.text.trim ( arg ) )
   end
   return arg

end

-- voir Modèle:Direction langue. function langue.directionLangue ( frame )

   local arg = premierParametre ( frame, true )
   local direction = 'ltr'
   for i, v in ipairs( datalangue.languesRtl ) do
       if arg == v then
           direction = 'rtl'
           break 
       end
   end
   return direction

end

-- voir Modèle:Code langue. function langue.codeLangue ( frame )

   local arg = premierParametre ( frame, true )
   local code = datalangue.dataCodeLangue [ arg ]
   return code or arg or 

end

-- voir Modèle:Code langue 2. function langue.codeLangue2 ( frame )

   local arg = premierParametre ( frame, true )
   local code = datalangue.dataCodeLangue [ arg ]
   return code or 

end

-- voir Modèle:Nom langue. function langue.nomLangue ( frame )

   local arg = premierParametre ( frame, true )
   local nom = datalangue.dataNomLangue [ arg ] or '?????'
   return '' .. nom .. ''

end

-- voir Modèle:Lang. function langue.lang ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }         -- préparation pour appel par modèle ou direct.
   local code = mw.ustring.lower ( mw.text.trim( args [1] or  ) )
   local texte = args.texte or 
   local dir = mw.ustring.lower ( args.dir or  )
   local trans = args.trans
   local wikiText = 
   
   if texte ==  then
       texte = args [2] or 
   end
   -- détection de la direction du texte.
   if code == 'ltr' or code == 'rtl' then
       dir = code
       code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
       texte = args [3] or 
   end
   -- prépatation du rendu de direction du texte.
   if dir == 'ltr' or dir == 'rtl' then 
       dir = 'dir=' .. dir
   else
       dir = 
   end
   -- transliteration.
   if trans and trans ~=  then
       trans = ' (' .. trans
           .. ')'
   else
       trans = 
   end
   -- compilation du texte à retourner.
   if code ==  then
       wikiText = texte
   else
       wikiText = '' .. texte
           .. '' .. trans
   end
   -- ajout de la catégorie Page avec code de langue invalide si le code langue est dans la table dataCodeInvalide.
   for i, v in ipairs( datalangue.dataCodeInvalide ) do
       if code == v then
           local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }
           if namespaceCategorisation [ mw.site.namespaces.id ] then
               wikiText = wikiText .. 
               break 
           end
       end
   end   
   return wikiText

end

function langue.langue ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   args [1] = langue.codeLangue ( args [1] )
   if not ( args.dir == 'ltr' or args.dir == 'rtl' ) then
       args.dir = langue.directionLangue ( args [1] )
   end
   return langue.lang ( args )

end

-- voir Modèle:Indication de langue. function langue.indicationDeLangue ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   local nomLangue = args [1] or 
   local code = mw.ustring.lower ( args.langue or mw.text.trim( args [2] or  ) )
   local texte = args.texte
   local dir = args.dir
   local wikiText = 
   if nomLangue ==  then
       nomLangue = datalangue.dataNomLangue [ code ] or 
   end
   if texte and texte ~=  then
       texte = ' ' .. langue.lang { code, dir = dir, texte = texte }
   else
       texte = 
   end
   wikiText = '('
       .. code .. ')'
       .. texte
   return wikiText

end

-- voir Modèle:Langue avec nom. function langue.langueAvecNom ( frame )

   local args = ( frame.getParent and frame:getParent().args ) or frame or { }
   local code = mw.ustring.lower ( mw.text.trim ( args [1] or ) )
   local texte = args.texte or args [2] or 
   local dir = args.dir
   local trans = args.trans
   local wikiText = 
   -- détection de la direction du texte.
   if code == 'ltr' or code == 'rtl' then
       dir = code
       code = mw.ustring.lower ( mw.text.trim ( args [2] ) )
       texte = args [3] or 
   end
   
   -- définition du nom de la langue en français.
   local nom = langue.nomLangue { code }
   if texte ~=  then
       texte = ' ' .. langue.lang { code, dir = dir, texte = texte, trans = trans }
   end
   wikiText = nom .. ' :' .. texte
   return wikiText

end

return langue