<:module:cle:> non traduit dans l'espace privé

Analyse par Claude :
non traduit dans l’espace privé (mais fonctionne en public) — SPIP 4.4.20
Contexte :
Un champ titre (spip_mots.titre / spip_groupes_mots.titre) contient un idiome
brut, ex. <:spip:bouton_valider:>, affiché via #TITRE (balise nue, sans
filtre) dans un squelette de l’espace privé (ex. plugins-dist/mots/prive/
objets/liste/mots-admin.html).
Symptôme :

  • Le tag n’est jamais traduit : reste affiché littéralement.
  • La typographie française insère en plus une espace insécable avant le ‹ : ›
    final (non protégé faute de traduction réussie), donnant à l’écran :
    <:spip:bouton_valider :> (au lieu de « Valider »)
    Reproduction isolée (hors admin, juste pour prouver que ce n’est pas
    spécifique à mes données) :
    squelette public :
    [(#ENV{txt}|extraire_idiome)]
    appelé avec ?txt=<:spip:bouton_valider:>
    → résultat : <:spip:bouton_valider:> (non traduit)
    Ce qui fonctionne, pour comparaison :
    • <:spip:bouton_valider:> écrit en dur dans le squelette (compilé) → OK,
      donne « Valider »
    • #VAL{spip:bouton_valider}|_T ou #ENV{cle}|_T (clé dynamique bare,
      sans les crochets <: :>) → OK, donne « Valider »
    • La même chaîne <:tour_difficult_1:> stockée en base et affichée via
      #TITRE dans une BOUCLE(MOTS) publique → OK, traduit correctement.
      Donc : seule la combinaison « idiome <: :> embarqué dans du texte dynamique
      (#TITRE d’un objet MOTS) + rendu dans l’espace privé » échoue. La fonction
      _T() elle-même fonctionne parfaitement avec les mêmes clés en contexte
      dynamique — le problème semble localisé au mécanisme d’extraction
      d’idiome à la volée (extraire_idiome() / classe Idiomes) tel qu’il est
      sollicité par la chaîne de traitement de l’espace privé.
      Piste possible : le CHANGELOG mentionne pour la 4.4.0-beta4 :
      « #34 Affichage des chaînes de langue en squelettes sur certains cas. »
      « #34 !39 Revert: transformation des idiomes en balise (sera dans SPIP 5.0
      uniquement) »
      Ce cas n’est peut-être pas couvert par ce correctif/revert, ou est une
      régression connexe.
      Environnement : SPIP 4.4.20 (2026-08-17), PHP (WAMP), MySQL.

je ne reproduis pas : l’idiome s’affiche traduit dans tous mes tests, espace privé ou page public, y compris avec le squelette de test suivant :

<h1>#SQUELETTE</h1>

<h2>Dans le squelette</h2>
<:spip:bouton_valider:>

#SET{idiome,#VAL{'<:'}|concat{'spip:bouton_valider:>'}}
<h2>Dans les filtres </h2>
[Brut : (#GET{idiome}) <br />]
[Typo : (#GET{idiome}|typo) <br />]
[Propre : (#GET{idiome}|propre|PtoBR) <br />]
[extraire_idiome : (#GET{idiome}|extraire_idiome) <br />]

j’ai ça

Dans le squelette
Valider
Dans les filtres
Brut : <:spip:bouton_valider:>
Typo : Valider
Propre : Valider
extraire_idiome : Valider 

Je re reproduis pas non plus en 4.4.20, si tu parles bien de mettre un idiome dans un champ titre de groupe de mot ou de mot (ou ailleurs) : moi il s’affiche bien dans l’espace privé, et public aussi donc

Et pour ce cas là, c’est sanitisé, il faut utiliser [(#ENV*{txt}|typo)] pour tester correctement en squelette…

Est-ce que tu n’aurais pas un plugin qui ferait des corrections de typographie à tout hasard ?

Je sens bien Ortho-typographie sur ce coup là…