Bienvenue sur le wiki de Nuit debout, nous sommes le 3016 mars.




Modification de Module:Langue

Aller à : navigation, rechercher

Attention : Vous n’êtes pas connecté. Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre nom d’utilisateur, entre autres avantages.

Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire.
Version actuelle Votre texte
Ligne 4 : Ligne 4 :
 
local dataLangue
 
local dataLangue
 
local moduleData = 'Module:Langue/Data'
 
local moduleData = 'Module:Langue/Data'
local langErrorMess = '<span class=error>langue non reconnue : %s</span>'
 
 
local success, resultat = pcall (mw.loadData, moduleData )
 
local success, resultat = pcall (mw.loadData, moduleData )
 
success = success and type( resultat.en ) == 'table'
 
success = success and type( resultat.en ) == 'table'
Ligne 120 : Ligne 119 :
 
local arg = premierParametre( frame, true )
 
local arg = premierParametre( frame, true )
 
if type( arg ) ~= 'string' or arg == '' then
 
if type( arg ) ~= 'string' or arg == '' then
return '<span class=error>langue non précisée</span>'
+
return '<span style="color:red">langue non précisée</span>'
 
end
 
end
 
local tabLangue = dataLangue[ arg ]
 
local tabLangue = dataLangue[ arg ]
Ligne 126 : Ligne 125 :
 
tabLangue = dataLangue[ mw.ustring.match( arg, '^(%a-)%-' ) ]
 
tabLangue = dataLangue[ mw.ustring.match( arg, '^(%a-)%-' ) ]
 
end
 
end
if not tabLangue then
+
if tabLangue then
 +
local nom
 +
if type( tabLangue.page ) == 'string' then
 +
nom = tabLangue.page .. '|' .. tabLangue.nom
 +
else
 +
nom = tabLangue.nom
 +
end
 +
return '[[' .. nom .. ']]'
 +
else
 
if success then
 
if success then
return string.format( langErrorMess, arg )
+
return '<span style="color:red;">langue non reconnue : ' .. arg .. ' </span>'
 
else
 
else
 
return '<span title="erreur dans ' .. moduleData .. '">' .. arg .. '</span>'
 
return '<span title="erreur dans ' .. moduleData .. '">' .. arg .. '</span>'
 
end
 
end
end
 
if type( tabLangue.page ) == 'string' then
 
if tabLangue.page ~= '' then
 
return '[[' .. tabLangue.page .. '|' .. tabLangue.nom .. ']]'
 
else
 
return tabLangue.nom
 
end
 
else
 
return '[[' .. tabLangue.nom .. ']]'
 
 
end
 
end
 
end
 
end
  
  
-- Voir Modèle:Langue
+
-- Voir Modèle:Lang
 
-- Paramètres :
 
-- Paramètres :
--    1 : code IETF de langue ;
+
--    1 : code IETF de langue ;
--    texte ou 2 : texte dans cette langue ;
+
--    texte ou 2 : texte dans cette langue ;
--    trans : translittération du texte ;
+
--    trans : translittération du texte ;
 
--    dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3).
 
--    dir : direction de la langue (obsolète : peut être en paramètre 1, avec code en 2 et texte en 3).
function Langue.langue( frame )
+
function Langue.lang( frame )
local args = ( frame.getParent and frame:getParent().args ) or frame        -- 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.
 
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 or ''
 
local texte = args.texte or ''
Ligne 189 : Ligne 187 :
 
 
 
-- Prépatation du rendu de direction du texte.
 
-- Prépatation du rendu de direction du texte.
dir = dir and dir:lower()
+
dir = mw.ustring.lower(dir or '')
if dir ~= 'ltr' and dir ~= 'rtl' then
+
if dir == 'ltr' or dir == 'rtl' then
dir = ( tabLangue and tabLangue.rtl and 'rtl' )
+
dir = ' dir=' .. dir
 +
else
 +
dir = (tabLangue and tabLangue.rtl and ' dir=rtl') or ''
 
end
 
end
  
 
-- Translittération.
 
-- Translittération.
local htmlTrans = mw.html.create()
 
 
if trans and trans ~= '' then
 
if trans and trans ~= '' then
trans = trans:gsub( "^''([^'].*[^'])''$", "%1" )
+
trans = trans:gsub( [[^''([^'].*[^'])''$]], '%1' )
htmlTrans:wikitext( " (''" )
+
trans = [[ (''<span class="lang-]] .. code .. ' transcription" lang="' .. code .. '-Latn"'
:tag( 'span' )
+
.. ' dir="ltr">' .. trans .. [[</span>'')]]
:addClass( 'transcription lang-' .. code )
+
else
:attr( 'lang', code .. '-Latn' )
+
trans = ''
:attr( 'dir', 'ltr' )
+
:wikitext( trans )
+
:done()
+
:wikitext( "'')" )
+
 
end
 
end
  
 
-- Compilation du texte à retourner.
 
-- Compilation du texte à retourner.
local html = mw.html.create( '' )
+
local wikiText = ''
 
if code == '' then
 
if code == '' then
html:wikitext( texte )
+
wikiText = texte
 
else
 
else
html:tag( 'span' )
+
wikiText = '<span class="lang-' .. code .. '" lang="' .. code .. '"'
:addClass( 'lang-' .. code )
+
.. dir .. '>' .. texte .. '</span>' .. trans
:attr{ lang = code, dir = dir }
+
:wikitext( texte )
+
:done()
+
:node( htmlTrans )
+
 
end
 
end
  
 
-- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide.
 
-- Ajout de la catégorie Page avec code de langue invalide si le code langue non reconnu ou invalide.
 
if success and ( type( tabLangue ) ~= 'table' or tabCode.invalide ) then
 
if success and ( type( tabLangue ) ~= 'table' or tabCode.invalide ) then
local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [12] = true, [14] = true, [100] = true }
+
local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }
 
if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] then
 
if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] then
 
if codeArg == '' then
 
if codeArg == '' then
 
codeArg = ' ' -- sinon la catégorie n'est pas wikifiée
 
codeArg = ' ' -- sinon la catégorie n'est pas wikifiée
 
end
 
end
html:wikitext( '[[Catégorie:Page avec code de langue invalide]] ' )
+
wikiText = wikiText
:wikitext( string.format( langErrorMess, codeArg ) )
+
.. '[[Catégorie:Page avec code de langue invalide|' .. codeArg .. ']]'
 +
.. '<small><span class="error">\''
 +
.. (codeArg or "<vide>") .. '\' erroné (lang)</span></small>'
 
end
 
end
 
end
 
end
  
return tostring( html )
+
return wikiText
 
end
 
end
  
-- Alias nom de fonction
+
-- Voir Modèle:Langue
Langue.lang = Langue.langue
+
-- Paramètres :
 +
--    1 : nom de langue ou code IETF ;
 +
--    texte ou 2 : texte dans cette langue ;
 +
--    trans : translitération du texte ;
 +
--    dir : direction de la langue.
 +
function Langue.langue( frame )
 +
return Langue.lang( frame )
 +
end
  
  
 
-- Voir Modèle:Indication de langue
 
-- Voir Modèle:Indication de langue
 
-- Paramètres :
 
-- Paramètres :
--    1 : nom de langue ;
+
--    1 : nom de langue ;
--    2 : code IETF ;
+
--    2 : code IETF ;
--    texte : texte dans cette langue ;
+
--    texte : texte dans cette langue ;
 
--    dir : direction de la langue.
 
--    dir : direction de la langue.
 
function Langue.indicationDeLangue( frame )
 
function Langue.indicationDeLangue( frame )
local args = ( frame.getParent and frame:getParent().args ) or frame
+
local args = ( frame.getParent and frame:getParent().args ) or frame or { }
 
local nomLangue = args[1] or ''
 
local nomLangue = args[1] or ''
 
local code = args.langue or mw.text.trim( args[2] or '' )
 
local code = args.langue or mw.text.trim( args[2] or '' )
Ligne 273 : Ligne 273 :
 
end
 
end
 
-- Compilation de l'indicateur de langue et du texte.
 
-- Compilation de l'indicateur de langue et du texte.
local html = mw.html.create()
+
wikiText = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : '
html:tag( 'span' )
+
.. nomLangue .. '">'
:addClass( 'indicateur-langue' )
+
.. code .. '</abbr>)</span>'
:wikitext( '(' )
+
.. texte
:tag( 'abbr' )
+
return wikiText
:addClass( 'abbr' )
+
:attr( 'title', 'Langue : ' .. nomLangue )
+
:wikitext( code )
+
:done()
+
:wikitext( ')' )
+
:done()
+
:wikitext( texte )
+
+
return tostring( html )
+
 
end
 
end
  
-- Voir Modèle:Mul
+
 
 +
-- Voir Modèle:Multiling
 
-- Paramètres : codes IETF ou noms de langue, en nombre indéfini (string ou nil uniquement).
 
-- Paramètres : codes IETF ou noms de langue, en nombre indéfini (string ou nil uniquement).
 
function Langue.indicationMultilingue( frame )
 
function Langue.indicationMultilingue( frame )
Ligne 302 : Ligne 294 :
 
end
 
end
 
 
if not args[2] and not dataLangue[ mw.ustring.lower( code ) ] then
 
local split = mw.text.split( code, '[+,;:/ .]+' )
 
if #split > 1 then
 
return Langue.indicationMultilingue( split )
 
end
 
end
 
 
-- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode.
 
-- Ajout des noms et codes de langue de chaque paramètre dans listeNom et ListeCode.
 
local i = 1
 
local i = 1
 
repeat
 
repeat
code = mw.ustring.lower( code )
+
code = mw.text.split( code, '-' )[1]
local tabLangue = dataLangue[ code ]
+
tabLangue = dataLangue[ mw.ustring.lower( code ) ]
if not tabLangue then
+
code = mw.text.split( code, '-' )[1]
+
tabLangue = dataLangue[ code ]
+
end
+
 
if type( tabLangue ) == 'table' then
 
if type( tabLangue ) == 'table' then
 
table.insert( listeNom, tabLangue.nom )
 
table.insert( listeNom, tabLangue.nom )
Ligne 322 : Ligne 304 :
 
elseif success then
 
elseif success then
 
table.insert( listeNom, '???' )
 
table.insert( listeNom, '???' )
local erreur = ' ' .. string.format( langErrorMess, code )
+
local erreur = ' <span style="color:red; font-size:120%;">langue non reconnue : '
 +
.. code .. ' </span>'
 
table.insert( listeCode, erreur )
 
table.insert( listeCode, erreur )
 
else
 
else
Ligne 335 : Ligne 318 :
 
local n = #listeCode
 
local n = #listeCode
 
local pluriel = ''
 
local pluriel = ''
if #listeCode == 0 then
+
if n == 0 then
 
return ''
 
return ''
 
elseif n > 1 then
 
elseif n > 1 then
Ligne 341 : Ligne 324 :
 
end
 
end
 
 
local html = mw.html.create( 'span' )
+
local wikiText = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue' .. pluriel .. ' : '
html:addClass( 'indicateur-langue' )
+
.. mw.text.listToText( listeNom ) .. '">'
:wikitext( '(' )
+
.. table.concat( listeCode, '+' ) .. '</abbr>)</span>'
:tag( 'abbr' )
+
:addClass( 'abbr' )
+
:attr( 'title', 'Langue' .. pluriel .. ' : ' .. mw.text.listToText( listeNom ) )
+
:wikitext( table.concat( listeCode, '+' ) )
+
:done()
+
:wikitext( ')' )
+
:done()
+
 
 
return tostring( html )
+
return wikiText
 
end
 
end
  
Ligne 358 : Ligne 334 :
 
-- Voir Modèle:Langue avec nom
 
-- Voir Modèle:Langue avec nom
 
-- Paramètres :
 
-- Paramètres :
--    1 : code IETF de langue ;
+
--    1 : code IETF de langue ;
--    texte ou 2 : texte dans cette langue ;
+
--    texte ou 2 : texte dans cette langue ;
--    trans : translittération du texte ;
+
--    trans : translittération du texte ;
 
--    dir : direction de la langue.
 
--    dir : direction de la langue.
 
function Langue.langueAvecNom( frame )
 
function Langue.langueAvecNom( frame )
local args = ( frame.getParent and frame:getParent().args ) or frame
+
local args = ( frame.getParent and frame:getParent().args ) or frame or { }
 
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 or args[2] or ''
 
local texte = args.texte or args[2] or ''
Ligne 392 : Ligne 368 :
 
-- latinOnly détermine si la chaine fournie contien uniquement des caractère latin (étendu, unicode < 880)
 
-- latinOnly détermine si la chaine fournie contien uniquement des caractère latin (étendu, unicode < 880)
 
function Langue.nonLatin( frame )
 
function Langue.nonLatin( frame )
local texte = premierParametre( frame )
+
texte = premierParametre( frame )
 
for codepoint in mw.ustring.gcodepoint( texte ) do
 
for codepoint in mw.ustring.gcodepoint( texte ) do
if codepoint > 879 and not (                 --  > 036F
+
if codepoint > 879 and not (
codepoint > 7423 and codepoint < 7936 or  -- suppléments phonétique, diacritiques et latin (1D00 à 1EFF)
+
codepoint > 7424 and codepoint < 7936 or  -- suppléments phonétique, diacritiques et latin
codepoint > 8191 and codepoint < 11392 or -- espace, indices, monaies et symboles divers (2000 à 2C7F)
+
codepoint > 8191 and codepoint < 11392   -- espace, indices, monaies et symboles divers
codepoint > 42783 and codepoint < 43008  -- latin étendu D  (A720 à A7FF)
+
)
) then
+
then
 
return true
 
return true
 
end
 
end
Ligne 455 : Ligne 431 :
 
end
 
end
  
-- listeCodeAlias génère une liste ; les langues sont la forme : * code : alias1, alias2
+
-- listeCodeAlias génère une liste ; les langues sont la forme : * code : alias1, alias2
 
function Langue.listeCodeAlias ()
 
function Langue.listeCodeAlias ()
 
if type( dataLangue ) ~= 'table' then
 
if type( dataLangue ) ~= 'table' then
Ligne 465 : Ligne 441 :
 
-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias
 
-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias
 
code = v.code
 
code = v.code
if code and not v.invalide then
+
if code then
 
languesTab[code] = languesTab[code] or { }
 
languesTab[code] = languesTab[code] or { }
 
if i ~= mw.ustring.lower( code ) then
 
if i ~= mw.ustring.lower( code ) then
Ligne 487 : Ligne 463 :
 
end
 
end
  
-- listeCodeAlias génère une liste ; les langues sont la forme :  * code : alias1, alias2
+
-- listeCodeAlias génère une liste ; les langues sont la forme :  * code : alias1, alias2
 
function Langue.listeAliasCode ()
 
function Langue.listeAliasCode ()
 
if type( dataLangue ) ~= 'table' then
 
if type( dataLangue ) ~= 'table' then
Ligne 497 : Ligne 473 :
 
-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias
 
-- on construit un table avec pour indices les codes de langue, et pour valeurs une table avec la liste des alias
 
code = v.code
 
code = v.code
if code and i ~= code and not v.invalide then
+
if code and i ~= code then
 
table.insert( languesTab, i .. ' = ' .. code )
 
table.insert( languesTab, i .. ' = ' .. code )
 
end
 
end

Avertissement : Toutes les contributions au wiki NuitDebout sont considérées comme publiées sous les termes de la licence Creative Commons attribution partage à l'identique 3.0.

Annuler | Aide (ouvre une nouvelle fenêtre)

Modèle utilisé par cette page :