Module:LienTéléphone
- La documentation ci-dessous est incluse ici depuis la page Module:LienTéléphone/doc.
- Utilisation
- Ce module est utilisé dans le Modèle:Listing pour mettre en forme les numéros de téléphone, et éventuellement former un lien fonctionnel permettant d'appeler directement ces numéros dans les navigateurs d'appareils prenant en charge ces liens (qui sont indiqués par une URI externe utilisant le préfixe standardisé
tel:
).
- Souligne les questions
- Pour trouver plus facilement quels numéros de téléphone posent problème avec des indicateurs visibles dans la page, vous pouvez ajouter ce qui suit à votre propre page de common.css (et personnaliser ce style proposé selon votre convenance). Mais il est également possible d'activer directement ce code en cochant (activant) le gadget Phoneinfo de la section Débug dans vos préférences.
.phoneinfo {
display: inline !important;
background: yellow; color: red;
}
- Exemples
Texte | Code | Résultat | Travaux à effectuer |
---|---|---|---|
+1 123 456 7890 | {{#invoke:LienTéléphone|LienTel|+1 123 456 7890}} | +1 123 456 7890 | Les espaces sont acceptées pour grouper visuellement ou ménomotechniquement les chiffres. Elles ne sont jamais composées. Leur placement est libre et facultatif n'importe où dans le numéro mais devrait se faire selon les usages habituels. |
+1 123-456-7890 | {{#invoke:LienTéléphone|LienTel|+1 123-456-7890}} | +1 123-456-7890 | Les signes « - » sont les seuls signes de ponctuations acceptés pour grouper visuellement ou ménomotechniquement les chiffres. Ils ne sont jamais composés. Leur placement et facultatif est libre n'importe où dans le numéro mais devrait se faire selon les usages habituels. |
+1 123-456-7890 ext 12 | {{#invoke:LienTéléphone|LienTel|+1 123-456-7890 ext 12}} | +1 123-456-7890 ext 12 | Il est possible d'ajouter un code d'extension, qui ne sera pas composé dans le numéro lors de l'appel mais seulement manuellement lors de son aboutissement. On l'indique visuellement en séparant ces chiffres additionnels par le code « ext » (qui doit être écrit en minuscules).
Ce module ne prend pas en charge les codes indiquant l'attente automatique du décrochage ou l'insertion d'une pause avant de composer automatiquement les chiffres d'extension (les équipements téléphoniques privés modernes peuvent recevoir directement tous les chiffres y compris l'extension pour faire une sélection directe à l'arrivée, car en principe tous les chiffres du numéro composé par l'appelant sont transmis tels quels par les différents opérateurs de réseaux, même si ces derniers n'en ont pas eux-mêmes besoin pour acheminer correctement les appels vers un réseau privé). |
+1 123 456 WIKI | {{#invoke:LienTéléphone|LienTel|+1 123 456 WIKI}} | +1 123 456 WIKI (9454) | Ce format utilisant les 26 lettres majuscules de l'alphabet latin de base (de A à Z) est utilisé communément dans certains pays comme un moyen mnémotechnique pour retenir les numéros publiés. Ce module prend en charge la conversion en chiffres de ces seules lettres, uniquement celles écrites en majuscules (selon la même disposition dite « T9 » affichée sur les claviers téléphoniques fixes ou mobiles habituels) pour former l'URI du lien affiché qui ne doit comprendre que des chiffres.
Il n'est pas recommandé car tous les téléphones (à clavier ou à ancien cadran analogique rotatif) n'affichent pas cette correspondance des lettres en chiffres, sauf dans les modèles vendus dans les pays concernés par cet usage. De plus, il pose un problème sérieux de lisibilité des numéros qui doivent être réellement composés (notamment pour distinguer visuellement le chiffre « 0 » de la lettre « O » correspondant au chiffre « 6 », ou le chiffre « 1 » de la lettre « I » correspondant au chiffre « 4 » et de la lettre « L » correspondant au chiffre « 5 ». Pour ces raisons ce module ajoute explicitement entre parenthèses la traduction des lettres en chiffres. |
+33 10 MAI 2018 | {{#invoke:LienTéléphone|LienTel|+33 10 MAI 2018}} | +33 10 MAI 2018 (6242018) | Lorsque les lettres converties en chiffres sont elles-mêmes suivies d'autres chiffres, ces derniers chiffres sont ajoutés aussi à l'indication entre parenthèses, qui comprend donc tous les derniers chiffres du numéro complet à partir de la première lettre convertie. De très anciens numéros de téléphone français utilisaient des lettres à la place des trois premiers chiffres du numéro local (ces lettres correspondaient parfois à des abréviations de noms de localités ou de quartiers par exemple à Paris) mais cet usage a été abandonné. |
+1 (123) 456 7890 | {{#invoke:LienTéléphone|LienTel|+1 (234) 567 890}} | +1 (234) 567 890 | Ce format permet de distinguer visuellement (avec les parenthèses) l'existence d'une numérotation abrégée possible pour les appels depuis et vers la même zone régionale au sein d'un plan de numérotation spécifique à un pays :
Ce format est de moins en moins supporté, car de nombreux pays et réseaux d'opérateurs passent progressivement à un plan unique de numérotation nationale et abandonnent les anciens schémas possibles (mais facultatifs) de numérotation plus courte, afin de pouvoir réutiliser au sein de chaque zone régionale des chiffres auparavant réservés à cette possibilité de changement de région. Dans les pays ayant fait cette transition à un plan de numérotation unique (où tous les chiffres doivent être composés même le code régional quelle que soit la région d'appel, y compris au sein du même réseau d'un opérateur), il est vivement recommandé de supprimer ces parenthèses (on peut toujours grouper les chiffres suivants avec des espaces ou tirets), mais il faut conserver le code « + » normalisé et l'indicatif pays qui le suit. |
+44 20 7890 1234, +44 20 7890 1235 | {{#invoke:LienTéléphone|LienTel|+44 20 7890 1234, +44 20 7890 1235}} | +44 20 7890 1234, +44 20 7890 1235 | On peut indiquer plusieurs numéros en les séparant par des virgules.
Attention : cet exemple (initialement donné pour des numéros fixes au Royaume-Uni) est ancien, car désormais le « 0 » présent avant le numéro complet national doit être composé dans tous les appels, y compris dans les appels internationaux après le « +44 » (la même remarque s'applique aussi à d'autres pays ayant fait ce choix, dont l'Italie) : n'oubliez pas alors d'inclure ce « 0 » (et n'utilisez aucune parenthèses), car ce module n'est pas capable de savoir s'il faut l'ajouter ou le supprimer automatiquement (les plans de numérotation interne de chaque pays ou opérateur sont trop nombreux ; seul le plan de numérotation internationale indiqué par le code « + » initial est normalisé pour tous les pays et tous les opérateurs de réseaux et aucun chiffre nécessaire ne doit manquer même si des numérotations plus courtes peuvent également exister nationalement ou régionalement ou sur le réseau d'un opérateur spécifique selon ses propres règles). |
+44 20 7890 1234 (réservations), +44 20 7890 1235 (général) | {{#invoke:LienTéléphone|LienTel|+44 20 7890 1234 (réservations), +44 20 7890 1235 (général)}} | +44 20 7890 1234 (réservations), +44 20 7890 1235 (général) | Il est possible d'indiquer l'usage d'un numéro en le précisant entre parenthèses après ce numéro. Cette indication ne sera pas traduite en chiffres dans les numéros à composer dans le lien généré.
Attention : il n'est pas encore possible d'inclure des virgules dans une indication entre parenthèses, les virgules ne peuvent servir que pour séparer des numéros différents. |
+44 20 7890 1234 | {{#invoke:LienTéléphone|LienTel|''+44'' 20 7890 1234}} | +44 20 7890 1234 | Le balisage simple pour la mise en forme de certaines partie du numéro est accepté mais facultatif, il est ignoré dans les numéros réellement composés. |
+44 (0)20 7890 1234 | {{#invoke:LienTéléphone|LienTel|+44 (0)20 7890 1234}} | +44 (0)20 7890 1234Catégorie:Listing avec format de numéro téléphonique erroné | Le code « (0) » doit être :
|
(1)123 456 7890 | {{#invoke:LienTéléphone|LienTel|(1)123 456 7890}} | (1)123 456 7890Catégorie:Listing avec numéro téléphonique sans code de pays | Le code « (1) » du plan de numérotation nord-américain est un préfixe de numérotation longue permettant d'effectuer des appels entre deux régions en le composant avant le code à trois chiffres de la zone régionale; s'il n'est pas composé, seuls les chiffres suivants sont utilisés pour les appels au sein de la même zone régionale et du même réseau d'un opérateur.
Cette ancienne notation (d'usage uniquement interne dans un seul pays et n'ayant qu'un seul opérateur de réseau) utilisant des parenthèses en tête du numéro, mais sans mentionner le préfixe international et le code pays n'est plus acceptée, car il est ambigu et ne précise pas clairement quelle est la longueur de l'indicatif régional mentionné après (donc combien de chiffres du numéro complet il faut conserver dans la numérotation abrégée), et cette notation peut également être confondue avec l'indication (dans les parenthèses) soit d'un code régional, soit d'un code pays. |
234 567 890 | {{#invoke:LienTéléphone|LienTel|234 567 890}} | 234 567 890Catégorie:Listing avec numéro téléphonique sans code de pays | Ajouter le préfixe international téléphonique. Il commence par « + ». |
0033912345678 | {{#invoke:LienTéléphone|LienTel|0033912345678}} | 0033912345678Catégorie:Listing avec numéro téléphonique sans code de pays | Ajouter le préfixe international téléphonique. Il commence par « + » et doit remplacer le code « 00 » (utilisé comme en France comme indiqué ici par les chiffres 33 qui suivent, mais l'appelant n'est pas nécessairement en France). Aucun code pays indiqué après le « + » ne peut commencer par le « 0 » |
7033912345678 | {{#invoke:LienTéléphone|LienTel|7033912345678}} | 7033912345678Catégorie:Listing avec numéro téléphonique sans code de pays | Ajouter le préfixe international téléphonique. Il commence par « + ». Il devrait remplacer le code « 70 » (utilisé ici comme en Russie pour appeler un numéro en France), mais les chiffres « 703... » pourraient aussi être interprétés comme un numéro de téléphone national fixe ou mobile, pas nécessairement en France ni en Russie. Ce module ne peut pas le deviner, même en se basant sur la longueur du numéro indiqué (car les numéros de téléphone ne sont pas toujours de longueur fixe au sein d'un même pays et parce qu'il peut y avoir des chiffres supplémentaires ajoutés, intégrés au numéro, composés, et utilisés comme chiffres de sélection à l'arrivée sur un réseau privé). Vérifiez la source de ce numéro (et notamment sa localisation géographique) avant de le modifier ou le compléter. |
+1 234.567.890 | {{#invoke:LienTéléphone|LienTel|+1 234.567.890}} | +1 234.567.890Catégorie:Listing avec format de numéro téléphonique erroné | Retirer les « . » séparateurs groupant les chiffres du numéro de téléphone, ou les remplacer par des espaces (ou des tirets« - » selon les usages habituels des pays, comme dans les deux premiers exemples ci-dessus) |
+44 20 7890 1234 réservations, +44 20 7890 1235 général | {{#invoke:LienTéléphone|LienTel|+44 20 7890 1234 réservations, +44 20 7890 1235 général}} | +44 20 7890 1234 réservationsCatégorie:Listing avec format de numéro téléphonique erroné, +44 20 7890 1235 généralCatégorie:Listing avec format de numéro téléphonique erroné | L'indication d'usage correspondant au numéro doit être placée entre parenthèses. |
0 800 10100 | {{#invoke:LienTéléphone|LienTel|0 800 10100}} | 0 800 10 100Catégorie:Listing avec numéro téléphonique sans code de pays | Ne pas mettre d'espace entre le « 0 » et le « 8 ». |
0800 10100 | {{#invoke:LienTéléphone|LienTel|0800 10100|tollfree=yes}} | 0800 10100 | Il s'agit d'un numéro gratuit sans préfixe (en France au moins).
Attention car ce pourrait être un numéro géographique dans un autre pays : dans ce cas il faut le convertir en format international (avec le code « + » et l'indicatif pays). Ce format est accepté par la présence du paramètre |
0800 101 000 (appel gratuit depuis la France) | {{#invoke:LienTéléphone|LienTel|0800 101 000 (appel gratuit depuis la France)|tollfree=yes}} | 0800 101 000 (appel gratuit depuis la France) | Il s'agit d'un numéro gratuit sans préfixe (en France au moins) mais c'est indiqué explicitement par le paramètre tollfree=yes et par l'indication visuelle (entre parenthèses, mais on ne peut actuellement pas encore y inclure des virgules).
|
089 123456 (numéro surtaxé et appel depuis la France uniquement) | {{#invoke:LienTéléphone|LienTel|089 123456 (numéro surtaxé et appel depuis la France uniquement)|demo=true}} | 089 123456 (numéro surtaxé et appel depuis la France uniquement) | Il s'agit d'un numéro surtaxé sans préfixe (comme indiqué explicitement). Ce n'est donc pas un numéro international. |
local i = {}
function i.LienTelUn(txt, demo)
local link = txt;
local othertxt = '';
local catMissingCountryCode = '';
local catFormatIssue = '';
local output;
local catprefix, catsuffix;
if demo == 'true' then
catprefix = '<small style="margin:1px;border:1px dotted red;padding:1px;background:#EEE;line-height:normal">[[:Catégorie:';
catsuffix = ']]</small>';
else
catprefix = '[[Catégorie:';
catsuffix = ']]';
end
-- any other text in brackets at the end is stored separately and ignored for the dialing number
if mw.ustring.gsub(txt, "(.*)( %([^0-9]*%))$", "%2") ~= txt then
othertxt = mw.ustring.gsub(txt, "(.*)( %([^0-9]*%))$", "%2");
txt = mw.ustring.gsub(txt, "(.c*)( %([^0-9]*%))$", "%1");
end
-- Don't include "ext NNNN" in the link
link = mw.ustring.gsub(txt, " +[Ee][Xx][Tt] +%d+$", "");
-- Don't include " xNNNN" in the link
link = mw.ustring.gsub(link, " +x%d+$", "");
link = mw.ustring.gsub(link, " ", "");
link = mw.ustring.gsub(link, "'", "");
if link == "" then
return "";
end
if mw.ustring.sub(link, 1, 1) ~= '+' and mw.ustring.len(link) > 4 then
catMissingCountryCode = '<span class="phoneinfo" style="display:none">SANSCDP</span>' ..
catprefix .. 'Listing avec numéro téléphonique sans code de pays' .. catsuffix;
if tollfree == 'yes' and mw.ustring.sub(link, 1, 4) == '0800' then
catMissingCountryCode = '';
end
if mw.ustring.match(mw.ustring.lower(othertxt), "numéro surtaxé") ~= nil then
catMissingCountryCode = '';
end
end
if mw.ustring.match(link,"^%+[%d-() ]+$") ~= nil then
output =
'<span class="plainlinks nourlexpansion">[tel:' .. link .. ' ' .. txt .. ']</span>' ..
othertxt;
elseif mw.ustring.match(link,"^%+[%d%u- ]+$") ~= nil then
local extra = mw.ustring.match(link, "%u[%d%u- ]+")
link = mw.ustring.gsub(link, "[A-C]", "2");
link = mw.ustring.gsub(link, "[D-F]", "3");
link = mw.ustring.gsub(link, "[G-I]", "4");
link = mw.ustring.gsub(link, "[J-L]", "5");
link = mw.ustring.gsub(link, "[M-O]", "6");
link = mw.ustring.gsub(link, "[P-S]", "7");
link = mw.ustring.gsub(link, "[T-V]", "8");
link = mw.ustring.gsub(link, "[W-Z]", "9");
extra = mw.ustring.gsub(extra, "[A-C]", "2");
extra = mw.ustring.gsub(extra, "[D-F]", "3");
extra = mw.ustring.gsub(extra, "[G-I]", "4");
extra = mw.ustring.gsub(extra, "[J-L]", "5");
extra = mw.ustring.gsub(extra, "[M-O]", "6");
extra = mw.ustring.gsub(extra, "[P-S]", "7");
extra = mw.ustring.gsub(extra, "[T-V]", "8");
extra = mw.ustring.gsub(extra, "[W-Z]", "9");
output =
'<span class="plainlinks nourlexpansion">[tel:' .. link .. ' ' .. txt .. ' <sup>(' .. extra .. ')</sup>]</span>' ..
othertxt;
else
output = txt .. othertxt;
if mw.ustring.match('+' .. link,"^%+[%d-() ]+$") == nil then
catFormatIssue = '<span class="phoneinfo" style="display:none">FORMAT</span>' ..
catprefix .. 'Listing avec format de numéro téléphonique erroné' .. catsuffix;
end
end
if mw.ustring.match(link,"%(0%)") ~= nil then
catFormatIssue = '<span class="phoneinfo" style="display:none">FORMAT</span>' ..
catprefix .. 'Listing avec format de numéro téléphonique erroné' .. catsuffix;
end
if mw.title.getCurrentTitle().namespace == 0 or demo == 'true' then
output = output .. catFormatIssue .. catMissingCountryCode;
end
return output;
end
function i.LienTel(frame)
local demo = frame.args["demo"] or '';
local fax = frame.args["fax"] or '';
local txtall = frame.args[1] or '' .. ',';
local tollfree = frame.args["numéro gratuit"] or '';
local txt = "";
local result = "";
local catprefix = '';
-- replace or / and with comma
txtall = mw.ustring.gsub(txtall, " ou %+", ", +");
txtall = mw.ustring.gsub(txtall, " et %+", ", +");
for txt in mw.ustring.gmatch(txtall, "([^,]+)") do
result = result .. ", " .. i.LienTelUn(txt, demo, fax, tollfree)
end
result = mw.ustring.sub(result, 3, mw.ustring.len(result) );
return result;
end
return i;