Module:Langue : Différence entre versions
(Nouvelle page : 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 mo...) |
(Prise en compte de la possibilité d'avoir le paramètre texte défini mais vide et le texte dans un paramètre non nommé.) |
||
Ligne 60 : | Ligne 60 : | ||
local args = frame.args or frame or { } -- préparation pour appel par modèle ou direct. | 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 code = mw.ustring.lower ( mw.text.trim( args [1] or '' ) ) | ||
− | local texte = args.texte | + | local texte = args.texte or '' |
local dir = mw.ustring.lower ( args.dir or '' ) | local dir = mw.ustring.lower ( args.dir or '' ) | ||
local trans = args.trans | local trans = args.trans | ||
local wikiText = '' | local wikiText = '' | ||
+ | |||
+ | if texte == '' then | ||
+ | texte = args [2] or '' | ||
+ | end | ||
-- détection de la direction du texte | -- détection de la direction du texte | ||
Ligne 69 : | Ligne 73 : | ||
dir = code | dir = code | ||
code = mw.ustring.lower ( mw.text.trim ( args [2] ) ) | code = mw.ustring.lower ( mw.text.trim ( args [2] ) ) | ||
− | texte = | + | texte = args [3] or '' |
end | end | ||
Ligne 142 : | Ligne 146 : | ||
local args = frame.args or frame or { } | local args = frame.args or frame or { } | ||
local code = mw.ustring.lower ( args.lang or mw.text.trim ( args [1] or '') ) | local code = mw.ustring.lower ( args.lang or mw.text.trim ( args [1] or '') ) | ||
− | local texte = | + | local texte = args [2] or '' |
local dir = args.dir | local dir = args.dir | ||
local wikiText = '' | local wikiText = '' | ||
Ligne 153 : | Ligne 157 : | ||
dir = code | dir = code | ||
code = mw.ustring.lower ( mw.text.trim ( args [2] ) ) | code = mw.ustring.lower ( mw.text.trim ( args [2] ) ) | ||
− | texte = | + | texte = args [3] or '' |
end | end | ||
− | if | + | if texte ~= '' then |
texte = ' ' .. langue.lang { code, dir = dir, texte = texte } | texte = ' ' .. langue.lang { code, dir = dir, texte = texte } | ||
− | |||
− | |||
end | end | ||
Ligne 166 : | Ligne 168 : | ||
return wikiText | return wikiText | ||
end | end | ||
− | + | ||
return langue | return langue |
Version du 28 juillet 2013 à 09:52
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