Bienvenue sur le wiki de Nuit debout, nous sommes le 3016 mars.
Modification de Module:Langue
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 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 | + | 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 | + | 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 | + | 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 | end | ||
end | end | ||
− | -- Voir Modèle: | + | -- Voir Modèle:Lang |
-- Paramètres : | -- Paramètres : | ||
− | -- 1 : code IETF de | + | -- 1 : code IETF de langue ; |
− | -- texte ou 2 : texte dans cette | + | -- texte ou 2 : texte dans cette langue ; |
− | -- trans : translittération du | + | -- 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. | + | 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 = mw.ustring.lower(dir or '') |
− | if dir | + | 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. | ||
− | |||
if trans and trans ~= '' then | if trans and trans ~= '' then | ||
− | trans = trans:gsub( | + | trans = trans:gsub( [[^''([^'].*[^'])''$]], '%1' ) |
− | + | trans = [[ (''<span class="lang-]] .. code .. ' transcription" lang="' .. code .. '-Latn"' | |
− | + | .. ' dir="ltr">' .. trans .. [[</span>'')]] | |
− | + | else | |
− | + | trans = '' | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
end | end | ||
-- Compilation du texte à retourner. | -- Compilation du texte à retourner. | ||
− | local | + | local wikiText = '' |
if code == '' then | if code == '' then | ||
− | + | wikiText = texte | |
else | else | ||
− | + | wikiText = '<span class="lang-' .. code .. '" lang="' .. code .. '"' | |
− | + | .. dir .. '>' .. texte .. '</span>' .. trans | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
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 | + | 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 | ||
− | + | wikiText = wikiText | |
− | + | .. '[[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 | + | return wikiText |
end | end | ||
− | -- | + | -- Voir Modèle: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 | + | -- 1 : nom de langue ; |
− | -- 2 : code | + | -- 2 : code IETF ; |
− | -- texte : texte dans cette | + | -- 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. | ||
− | + | wikiText = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue : ' | |
− | + | .. nomLangue .. '">' | |
− | + | .. code .. '</abbr>)</span>' | |
− | + | .. texte | |
− | + | return wikiText | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | return | + | |
end | end | ||
− | -- Voir Modèle: | + | |
+ | -- 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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
-- 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.text.split( code, '-' )[1] | |
− | + | tabLangue = dataLangue[ mw.ustring.lower( code ) ] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
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 = ' ' .. | + | 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 | + | if n == 0 then |
return '' | return '' | ||
elseif n > 1 then | elseif n > 1 then | ||
Ligne 341 : | Ligne 324 : | ||
end | end | ||
− | local | + | local wikiText = '<span class="indicateur-langue">(<abbr class="abbr" title="Langue' .. pluriel .. ' : ' |
− | + | .. mw.text.listToText( listeNom ) .. '">' | |
− | + | .. table.concat( listeCode, '+' ) .. '</abbr>)</span>' | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | return | + | 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 | + | -- 1 : code IETF de langue ; |
− | -- texte ou 2 : texte dans cette | + | -- texte ou 2 : texte dans cette langue ; |
− | -- trans : translittération du | + | -- 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 ) | ||
− | + | texte = premierParametre( frame ) | |
for codepoint in mw.ustring.gcodepoint( texte ) do | for codepoint in mw.ustring.gcodepoint( texte ) do | ||
− | if codepoint > 879 and not ( | + | if codepoint > 879 and not ( |
− | codepoint > | + | codepoint > 7424 and codepoint < 7936 or -- suppléments phonétique, diacritiques et latin |
− | codepoint > 8191 and codepoint < 11392 | + | codepoint > 8191 and codepoint < 11392 -- espace, indices, monaies et symboles divers |
− | + | ) | |
− | + | then | |
return true | return true | ||
end | end | ||
Ligne 455 : | Ligne 431 : | ||
end | end | ||
− | -- listeCodeAlias génère une | + | -- 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 | + | 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 | + | -- 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 | + | if code and i ~= code then |
table.insert( languesTab, i .. ' = ' .. code ) | table.insert( languesTab, i .. ' = ' .. code ) | ||
end | end |