Module:traduction table
Apparence
La documentation pour ce module peut être créée à Module:traduction table/Documentation
b = require('Module:bases')
lang = require('Module:langues')
wikt_lang = require('Module:langues/data_wikt')
tradmod = require('Module:traduction')
local p = {}
function p.lang_sort(lang1, lang2)
nom1 = lang.get_nom(lang1) or lang1
nom2 = lang.get_nom(lang2) or lang2
return nom1 < nom2
end
function _index_table_par_valeur(tab)
local index = {}
for key, val in pairs(tab) do
table.insert(index, key)
end
table.sort(index, p.lang_sort)
return index
end
function _trad_format(texte, lang)
if (texte == nil or texte == '' or lang == nil or lang == '') then return nil end
-- D'abord on sépare les termes
--local termes = mw.text.split(texte, " ?[,;] ")
--local texte_final = table.concat(termes, ", ") -- , ou <br /> ?
-- Pour chaque terme (=boucle quand on pourra utiliser split)
local texte_final = ''
if mw.ustring.find(texte, "%[%[") then
-- On ne fait qu'adapter le lien préexistant, si c'est un lien simple
if wikt_lang[lang] then
texte_final = mw.ustring.gsub(texte, "%[%[([^:#]+)%]%]", "[[%1#" ..lang .. "|%1]] <span class=\"trad-exposant\">[[:" .. lang .. ":%1|(" .. lang .. ")]]</span>")
else
texte_final = mw.ustring.gsub(texte, "%[%[([^:#]+)%]%]", "[[%1#" ..lang .. "|%1]]")
end
end
return texte_final
end
function _trad_table(frame)
local trads = frame.args
local article = mw.title.getCurrentTitle()
-- D'abord on récupère la liste des langues correspondantes
tab_langue = {}
for code, trad in pairs(trads) do
if (type(code)=="string") then
local nom_langue = lang.get_nom(code)
if nom_langue ~= nil and nom_langue ~= '' then
tab_langue[code] = nom_langue
if article.namespace == 0 then
tab_langue[code] = tab_langue[code] .. b.fait_categorie_contenu('Traductions en ' .. nom_langue)
end
else
tab_langue[code] = "''" .. code .. "*''" .. b.fait_categorie_contenu('Wiktionnaire:Langues sans code', code)
end
end
end
-- Ensuite on tri les codes langues dans l'ordre alphabétique des langues
local ordre = _index_table_par_valeur(tab_langue)
-- Enfin, on écrit chaque ligne de traduction dans cet ordre
--local textet_final = {'{| class="wikitable sortable"\r\n! Langue !! Traductions'} -- Version tableau
local textet_final = {}
if (trads[1]) then
table.insert(textet_final, frame:preprocess("{{trad-début|" .. trads[1] .. "}}"))
end
for i in ipairs(ordre) do
code = ordre[i]
local trad = _trad_format(trads[code], code) or 'Pas de traduction donnée ?'
local langue = tab_langue[code] or "''"..code.."''"
table.insert(textet_final, '* ' .. b.ucfirst(langue) .. ' : ' .. trad)
--table.insert(textet_final, '|-\r\n| ' .. langue .. ' || ' .. trad) -- Version tableau
end
table.insert(textet_final, frame:preprocess('{{trad-fin}}'))
--table.insert(textet_final, '|}') -- Version tableau
return table.concat(textet_final, "\r\n")
end
function p.tableau_de_traductions(frame)
return _trad_table(frame)
end
return p