« Module:Langue » : différence entre les versions
Utilisation des paramètres transmis au modèle et non ceux transmis à invoke (permet de déterminer ceux qui ne sont pas définis) |
premierParametre différencie texte vide et pas de texte. |
||
| Ligne 5 : | Ligne 5 : | ||
-- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été au module par invoke, directement au modèle, | -- premierParametre renvoi 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 direstement de string. | ||
-- si aucun de ces argument ne contient de chaine, la fonction renvoi 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 rendue trimé et en minuscule. | ||
local function premierParametre ( frame, lowerCase ) | local function premierParametre ( frame, lowerCase ) | ||
local arg | local arg | ||
if type ( frame ) == 'table' then | if type ( frame ) == 'table' then | ||
arg = ( frame.getParent and ( frame.args [1] or frame:getParent().args [1] ) ) or frame [1] | arg = ( frame.getParent and ( frame.args [1] or frame:getParent().args [1] ) ) or frame [1] | ||
elseif type ( frame ) == 'string' then | elseif type ( frame ) == 'string' then | ||
arg = frame | arg = frame | ||
end | end | ||
if type ( arg ) ~= 'string' then | if type ( arg ) ~= 'string' then | ||
arg = | arg = nil | ||
end | end | ||
if lowerCase then | if arg and lowerCase then | ||
arg = mw.ustring.lower ( mw.text.trim ( arg ) ) | arg = mw.ustring.lower ( mw.text.trim ( arg ) ) | ||
end | end | ||
| Ligne 40 : | Ligne 41 : | ||
local arg = premierParametre ( frame, true ) | local arg = premierParametre ( frame, true ) | ||
local code = datalangue.dataCodeLangue [ arg ] | local code = datalangue.dataCodeLangue [ arg ] | ||
return code or arg | return code or arg or '' | ||
end | end | ||
Version du 29 juillet 2013 à 11:58
local langue = { }
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, -- ou à l'intérieur d'un module sous forme de string dans un tableau ou direstement de string. -- si aucun de ces argument ne contient de chaine, la fonction renvoi nil -- si le deuxième paramètre est true, la chaine est rendue trimé 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
wikiText = '' .. texte
.. '' .. trans
-- 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
wikiText = wikiText ..
break
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 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 ( args.lang or mw.text.trim ( args [1] or ) )
local texte = arg.texte or args [2] or
local dir = args.dir
local wikiText =
-- définition du nom de la langue en français
local nom = langue.nomLangue { code }
-- 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
if texte ~= then
texte = ' ' .. langue.lang { code, dir = dir, texte = texte }
end
wikiText = nom .. ' :' .. texte
return wikiText
end
return langue