Module:catégories Babel

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

La documentation pour ce module peut être créée à Module:catégories Babel/Documentation

local m_langs = require("Module:langues")
local m_params = require("Module:paramètres")

local p = {}

local topCategoryName = "Personnes ayant un intérêt ou parlant %s"

local levelCategoriesNames = {
  ["Personnes ayant un intérêt ou parlant (.+)"] = {
    desc = "Ces personnes parlent %s à différents niveaux.",
  },
  ["Personnes ne parlant pas (.+) mais s’y intéressant"] = {
    level = "0",
    desc = "Ces personnes ont déclaré ne pas parler %s.",
  },
  ['Personnes ayant un niveau débutant en (.+)'] = {
    level = "1",
    desc = "Ces personnes ont déclaré avoir un niveau débutant en %s.",
  },
  ["Personnes ayant un niveau intermédiaire en (.+)"] = {
    level = "2",
    desc = "Ces personnes ont déclaré avoir un niveau intermédiaire en %s.",
  },
  ["Personnes ayant un niveau avancé en (.+)"] = {
    level = "3",
    desc = "Ces personnes ont déclaré avoir un niveau avancé en %s.",
  },
  ["Personnes ayant un niveau très avancé en (.+)"] = {
    level = "4",
    desc = "Ces personnes ont déclaré avoir un niveau très avancé en %s.",
  },
  ["Personnes parlant nativement en (.+)"] = {
    level = "N",
    desc = "Ces personnes ont déclaré parler nativement en %s.",
  },
}

--- @param title string Page title.
--- @param code string Optional language code if undefined in [[Module:langues/data]].
local function _description(title, code)
  for regex, data in pairs(levelCategoriesNames) do
    local langName = mw.ustring.match(title, "^" .. regex .. "$")
    if langName then
      local desc = mw.ustring.format(data.desc, langName)
      local level = data.level
      code = code or m_langs._getLanguageCode(langName)
      local categoryName = mw.ustring.format(topCategoryName, langName)

      local res = desc
      if level then
        if not code then
          return '<span style="color: red; font-weight: bold">Le nom de la langue est inconnu.</span>[[Catégorie:Langue d’une catégorie Babel inconnue]]'
        end
        res = res .. mw.ustring.format("\n\nCode Babel&nbsp;: <code>%s-%s</code>\n[[Catégorie:%s|%s]]",
            code, level, categoryName, langName .. "-" .. level)
      else
        res = res .. mw.ustring.format("\n[[Catégorie:Wiktionnaristes par langue|%s]]", langName)
      end

      return res .. "\n\n<small>''Le nom de cette catégorie est généré par l’extension Babel, '''merci de ne pas le changer'''.''</small>"
    end
  end

  return '<span style="color: red; font-weight: bold">Le titre de la page ne correspond pas aux critères.</span>[[Catégorie:Titre d’une catégorie Babel invalide]]'
end

function p.description(frame)
  local args, success = m_params.process(frame:getParent().args, {
    [1] = {},
  })
  if success then
    return _description(mw.title.getCurrentTitle().text, args[1])
  else
    error(args[3])
  end
end

return p