Module:prononciation/tests

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

La documentation pour ce module peut être créée à Module:prononciation/tests/Documentation

lib_lang = require('Module:langues')
lib_base = require("Module:bases")
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.
-------------------------------------------------------------------------------------------------------
function p.lua_pron(api, lang_code, crochets)
    crochets = crochets or '\\\\' -- 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()
    
    -- 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:Prononciations manquantes ' .. cat_lang
        local cat = lib_base.fait_categorie_contenu(cat_nom)
        if cat then txt = txt .. cat end
        return txt
    elseif (api == '-') then -- "-" veut dire "rien"
    	return ''
    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
        return '[[' .. page_pron .. '|<span class="API" title="prononciation API">' .. crochet1 .. api .. crochet2 .. '</span>]]'
    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
    return p.lua_pron(texte_api, code_lang, '\\\\')
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()
    -- 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]
    local code_lang = args[3] or args["lang"]
    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
            txt = txt .. frame:preprocess('[[Catégorie:Prononciations sonores en {{' .. code_lang .. '}}]]')
            if (texte_api) then
                txt = txt .. ' ' .. p.lua_pron(texte_api,code_lang,'[]')
            end
            txt = txt .. ' »[[File:' .. fic_audio .. ']]'
        else
            txt = txt .. p.lua_pron(texte_api,code_lang,'[]')
        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:Mots à h aspiré]]'
	end
	return txt
end
 
-- publication des fonctions publiques
return p