Module:Langue
Apparence
La documentation pour ce module peut être créée à Module:Langue/doc
local langue = { }
local datalangue = mw.loadData( 'Module:langue/Data' )
-- premierParametre renvoi le premier paramètre de Frame, que celui-ci ait été transmi par au modèle, au module par invoke, ou à l'intérieur d'un module sous forme de string dans un tableau ou direstement de string.
-- 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.args and frame.args [1] ) or frame [1] or ''
elseif type ( frame ) == 'string' then
arg = frame
end
if type ( arg ) ~= 'string' then
arg = ''
end
if 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
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.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 = ' (<span class="lang-' .. code
.. ' transcription" lang="' .. code
.. '-Latn" dir="ltr">' .. trans
.. '</span>)'
else
trans = ''
end
-- compilation du texte à retourner
wikiText = '<span class="lang-' .. code
.. '" lang="' .. code
.. '" ' .. dir
.. '>' .. texte
.. '</span>' .. 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 .. '[[Catégorie:Page avec code de langue invalide]]'
break
end
end
return wikiText
end
-- voir Modèle:Langue
function langue.langue ( frame )
local args = frame.args or frame or { }
args [1] = langue.codeLangue ( args [1] )
args.dir = args.dir or langue.directionLangue ( args [1] )
return langue.lang ( args )
end
-- voir Modèle:Indication de langue
function langue.indicationDeLangue ( frame )
local args = frame.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 = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
.. nomLangue .. '">'
.. code .. '</abbr>)</span>'
.. texte
return wikiText
end
-- voir Modèle:Langue avec nom
function langue.langueAvecNom ( frame )
local args = frame.args or frame or { }
local code = mw.ustring.lower ( args.lang or mw.text.trim ( args [1] or '') )
local texte = 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