Amṣada:prononciation
La documentation pour ce module peut être créée à Amṣada:prononciation/doc
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="Ulac alaɣi">' .. crochet1 .. '<small><span class="plainlinks stubedit">['
txt = txt .. tostring(mw.uri.fullUrl(cette_page.fullText, 'action=edit'))
txt = txt .. ' Alaɣi ?]</span></small>' .. crochet2 .. '</span>'
-- Catégorisation de cette absence de prononciation
local cat_lang = lang_nom and ('s '.. lang_nom) or 'sans langue précisée'
local cat_nom = 'Wikasegzawal:Ulac alaɣi ' .. 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/aɣir
-- 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>(ulac aɣir)</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 .. 'sel « ' .. titre
if (code_lang) then
local lang_nom = lib_lang.get_nom(code_lang)
if lang_nom then
txt = txt .. '[[Taggayt:Audio alaɣi s ' .. lang_nom .. ']]'
else
txt = txt .. '[[Taggayt:Prononciations audio sans langue précisée]]'
end
end
if (texte_api) then
txt = txt .. ' ' .. p.lua_pron(texte_api, code_lang,'[]')
end
txt = txt .. ' »[[Afaylu:' .. 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:Termes en français à h aspiré]]'
end
return txt
end
-- publication des fonctions publiques
return p