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 ']'
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
local code_lang = args or args
-- 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
local code_lang = args or args
-- 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
local code_lang = args or args
-- 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
if pays == nil or mw.text.trim(pays) == '' then pays = '<small>(Région à préciser)</small>' end
local texte_api = args
local code_lang = args or args
local fic_audio = args
local titre = args 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(']')
if (texte_api) then
txt = txt .. ' ' .. p.lua_pron(texte_api,code_lang,'')
end
txt = txt .. ' »]'
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 ])</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 or (args=='nocat')
-- lien ] en exposant petit
local txt = '<sup style="font-size:83.33%;line-height:1"><small>(])</small></sup>'
-- catégorisation si dans "principal" (ns==0)
if (ns==0) and (not nocat) then
txt = txt..']'
end
return txt
end
-- publication des fonctions publiques
return p