Module:Langue : Différence entre versions
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))) |
(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 | + | -- 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 | + | -- 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 | + | -- 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 | + | -- 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
La documentation pour ce module peut être créée à Module:Langue/doc
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 = ' (<span class="lang-' .. code .. ' transcription" lang="' .. code .. '-Latn" dir="ltr">' .. trans .. '</span>)' else trans = '' end -- compilation du texte à retourner. if code == '' then wikiText = texte else wikiText = '<span class="lang-' .. code .. '" lang="' .. code .. '" ' .. dir .. '>' .. texte .. '</span>' .. 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 .. '[[Catégorie:Page avec code de langue invalide]]' 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 = '<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.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