Module:prononciation

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
Sauter à la navigation Sauter à la recherche
Ce module regroupe diverses fonctions pour afficher des prononciations.
Fonctions appelables par d’autres modules en lua

En mettant lib_pron = require('Module:prononciation') au début, tout module lua peut utiliser les fonctions suivantes.

  • racine_pron : titre de la page principale de description des prononciations (ex : Annexe:Prononciation)
  • page_pron(lang_code) : titre de la page de description de la prononciation de la langue spécifiée (ex : Annexe:Prononciation/français. Retourne nil si la page n’existe pas).
  • lua_pron : génère le wikitexte pour afficher une prononciation dans un article, avec tout ce qu’il faut.
    • lua_pron(api, lang_code) : équivalent de {{pron}}.
    • lua_pron(api, lang_code, '[]') : équivalent de {{phon}}.
    • lua_pron(api, lang_code, crochets) : d’autres séparateurs sont possibles.
Fonctions pour modèles

Ces fonctions utilisent frame:getParent() et donc ne peuvent être utilisées que depuis un modèle.

  • pron(frame) : pour {{pron}} (utilise lua_pron())
  • phon(frame) : pour {{phon}} (utilise lua_pron())
  • pron_reg(frame) : pour {{écouter}} (utilise lua_pron())
  • h_aspire(frame) : pour {{h aspiré}}

info Documentation du Module:prononciation : v · d · m · h.


lib_lang = require('Module:langues')
lib_base = require("Module:bases")
lib_rimes = require('Module:rimes')
local p = {}

-------------------------------------------------------------------------------------------------------
-- Page principale des annexes de prononciations
-------------------------------------------------------------------------------------------------------
p.racine_pron = 'Annexe:Prononciation'

-------------------------------------------------------------------------------------------------------
-- Page de l'annexe de prononciation dans une langue donnée
-------------------------------------------------------------------------------------------------------
function p.page_pron(lang_code)
    local lang_nom = lib_lang.get_nom(lang_code)
    if (lang_nom) then
        local page_de_pron = p.racine_pron..'/'..lang_nom
        if lib_base.page_existe(page_de_pron) then
            return page_de_pron
        end
    end
    return nil
end

-------------------------------------------------------------------------------------------------------
-- Mise en forme d'une prononciation, avec lien vers la page dédiée si elle existe.
-- Fonction destinée à être appelée par d'autres modules lua
-- Par défaut "crochets" vaut "\\", mais une autre valeur courante en API est "[]" (pas de contrôle)
-- 2015-02 : si la pron est '-', alors pron vide.
-- 2019-07 : si is_audio_linked est vrai, c'est que la prononciation est reliée à un fichier audio
-------------------------------------------------------------------------------------------------------
function p.lua_pron(api, lang_code, crochets, is_audio_linked)
    crochets = crochets or '\\\\' -- valeur par défaut
    is_audio_linked = is_audio_linked or false -- valeur par défaut
    local crochet1 = string.sub(crochets, 1, 1)
    local crochet2 = string.sub(crochets, 2, 2)
    local lang_nom = lib_lang.get_nom(lang_code)
    local cette_page = mw.title.getCurrentTitle()
    
    local missing_lang = ""
    if not lang_code or lang_code == '' or not lang_nom then
      missing_lang = lib_base.fait_categorie_contenu("Wiktionnaire:Prononciations avec langue manquante")
    end
    
    -- Pas de prononciation donnée: invite + catégorie
    if (not api) or (api == '') then
        -- Invitation à ajouter la prononciation
        local txt = '<span title="Prononciation à préciser">' .. crochet1 .. '<small><span class="plainlinks stubedit">['
        txt = txt .. tostring(mw.uri.fullUrl(cette_page.fullText, 'action=edit'))
        txt = txt .. ' Prononciation ?]</span></small>' .. crochet2 .. '</span>'
        
        -- Catégorisation de cette absence de prononciation
        local cat_lang = lang_nom and ('en '.. lang_nom) or 'sans langue précisée'
        local cat_nom = 'Wiktionnaire:'
        if (is_audio_linked) then
            cat_nom = cat_nom .. 'Prononciations phonétiques manquantes '
        else
            cat_nom = cat_nom .. 'Prononciations manquantes '
        end
        cat_nom = cat_nom .. cat_lang
        local cat = lib_base.fait_categorie_contenu(cat_nom)
        if cat then txt = txt .. cat end
        if missing_lang then txt = txt .. missing_lang end
        return txt
    elseif (api == '-') then -- "-" veut dire "rien"
      local txt = ""
      if missing_lang then txt = txt .. missing_lang end
      return txt
    else -- cas normal
        -- Page d'aide de la prononciation dans la langue donnée
        local page_pron = p.page_pron(lang_code) or p.racine_pron
    
        -- On affiche la prononciation avec le lien vers la page d'aide
        local txt = '[[' .. page_pron .. '|<span class="API" title="prononciation API">' .. crochet1 .. api .. crochet2 .. '</span>]]'
        if missing_lang then txt = txt .. missing_lang end
        return txt
    end
end
 
-------------------------------------------------------------------------------------------------------
-- Fonction destinée à être utilisée directement depuis le modèle:pron.
-- Le 1er paramètre est la prononciation en API, le 2e le code ISO de la langue.
-------------------------------------------------------------------------------------------------------
function p.pron(frame)
    local args = frame:getParent().args
    local texte_api = args[1]
    local code_lang = args[2] or args["lang"]
    -- Prononciation entre barres obliques
    
--    local extra = ""
--    local cat_rimes = lib_rimes.get_categorie(texte_api)
--    if lib_base.page_principale() and code_lang == 'fr' and cat_rimes and cat_rimes ~= '' then
--      extra = '[[' .. cat_rimes .. ']]'
--      local cat_rimes_missing = ""
--      if not lib_base.page_existe(cat_rimes) then
--        extra = extra .. "[[Catégorie:Pages sans catégorie de rimes]]"
--      end
--    end 
    
    return p.lua_pron(texte_api, code_lang, '\\\\') -- .. extra
end
 
-------------------------------------------------------------------------------------------------------
-- Fonction destinée à être utilisée directement depuis le modèle:phon.
-- Le 1er paramètre est la prononciation en API, le 2e le code ISO de la langue.
-------------------------------------------------------------------------------------------------------
function p.phon(frame)
    local args = frame:getParent().args
    local texte_api = args[1]
    local code_lang = args[2] or args["lang"]
    -- Prononciation entre crochets
    return p.lua_pron(texte_api, code_lang, '[]')
end

-------------------------------------------------------------------------------------------------------
-- Fonction destinée à être utilisée directement depuis le modèle:phono.
-- Le 1er paramètre est la prononciation en API, le 2e le code ISO de la langue.
-------------------------------------------------------------------------------------------------------
function p.phono(frame)
    local args = frame:getParent().args
    local texte_api = args[1]
    local code_lang = args[2] or args["lang"]
    -- Prononciation entre barres obliques
    return p.lua_pron(texte_api, code_lang, '//')
end
 
-------------------------------------------------------------------------------------------------------
-- Fonction destinée à être utilisée directement depuis le modèle:écouter. Paramètres :
-- 1 = pays/région
-- 2 = prononciation en API
-- 3 ou lang = code ISO de la langue
-- audio = nom du fichier audio (sans le préfixe File:)
-- titre = texte prononcé si ≠ mot vedette
-------------------------------------------------------------------------------------------------------
function p.pron_reg(frame)
    local cette_page = mw.title.getCurrentTitle()
    local ns = mw.title.getCurrentTitle().namespace
    -- récup des params & valeurs par défaut
    local args = frame:getParent().args
    local pays = args[1]
    if pays == nil or mw.text.trim(pays) == '' then pays = '<small>(Région à préciser)</small>' end
    local texte_api = args[2]
    if texte_api == nil then texte_api = '' end
    local code_lang = args["lang"] or args[3]
    local fic_audio = args["audio"]
    local titre = args["titre"] or cette_page.text

    -- Génération du wikicode
    local txt = pays .. ' : '
    if (texte_api or fic_audio) then
        if (fic_audio and fic_audio ~= '') then
            txt = txt .. 'écouter « ' .. titre
            if (code_lang) and (ns==0) then
                local lang_nom = lib_lang.get_nom(code_lang)
                if lang_nom then
                    txt = txt .. '[[Catégorie:Prononciations audio en ' .. lang_nom .. ']]'
                else
                    txt = txt .. '[[Catégorie:Prononciations audio sans langue précisée]]'
                end
            end
            txt = txt .. ' ' .. p.lua_pron(texte_api, code_lang,'[]', true)
            txt = txt .. ' »[[File:' .. fic_audio .. ']]'
        else
            txt = txt .. p.lua_pron(texte_api, code_lang,'[]', true)
        end
    else
        txt = txt .. '<small>merci de préciser une prononciation phonétique ou un fichier audio (voir la [[Modèle:écouter|notice]])</small>'
    end
    return txt
end
 
-------------------------------------------------------------------------------------------------------
-- Fonction destinée à être utilisée directement depuis le modèle:h_aspiré.
-- Pour les paramètres, voir la doc de modèle:h_aspiré (c'est un peu compliqué).
-------------------------------------------------------------------------------------------------------
function p.h_aspire(frame)
  local ns = mw.title.getCurrentTitle().namespace
  local args = frame:getParent().args
  local nocat = args["nocat"] or (args[1]=='nocat')
  -- lien [[h aspiré]] en exposant petit
  local txt = '<sup style="font-size:83.33%;line-height:1"><small>([[h aspiré]])</small></sup>'
  -- catégorisation si dans "principal" (ns==0)
  if (ns==0) and (not nocat) then
    txt = txt..'[[Catégorie:Termes en français à h aspiré]]'
  end
  return txt
end
 
-- publication des fonctions publiques
return p