[spip-dev] Retour de _T

Hello,

Ne pourrait-on pas profiter de SPIP 3 pour changer le retour de la fonction _T quand l’item n’est pas trouvé dans le fichier de langue.
Le service minimum actuel est plus embêtant qu’autre chose car il empêche de tester simplement l’impossibilité de traduction.

Je proposerais donc que _T renvoie l’item lui-même si aucune traduction n’est trouvée ce qui permet de tester
if (_T(‘item’) = item) pas de traduction…

En outre, je propose qu’on crée un mode de dev qui renverrait toujours l’item afin de pouvoir repérer facilement les items de langue dans une page.

A votre avis ?

Salut,

+1000, depuis le temps que j'en parle...

En revanche, il ne faut pas changer le retour de _T(), cela risquerait d'engendrer des erreurs de compat trop importantes. Mais pourquoi ne pas étendre la fonctionnalité ?
  _T_exists('item') ?
  _T('item', true) ?
Ce test ne nuirait pas les perfs, puisque les chaines de langue sont a priori mises en static lors du premier calcul par $traduire().

Nouvelle fonction :

function _T_exists($texte) {
  static $traduire=false ;

    if (!$traduire) {
    $traduire = charger_fonction('traduire', 'inc');
    include_spip('inc/lang');
  }
  return $traduire($texte, $GLOBALS['spip_lang']) <> '';
}

Modif de la fonction existante :

function _T($texte, $args=array(), $class='') {
  static $traduire=false ;

    if (!$traduire) {
    $traduire = charger_fonction('traduire', 'inc');
    include_spip('inc/lang');
  }
  $text = $traduire($texte,$GLOBALS['spip_lang']);
/* début ajout */
  if (is_bool($args))
    $arg ? return $text<>'' : $args = array();
/* fin ajout */
  if (!strlen($text))
    // pour les chaines non traduites, assurer un service minimum
    $text = str_replace('_', ' ',
       (($n = strpos($texte,':')) === false ? $texte :
        substr($texte, $n+1)));

  return _L($text, $args, $class);
}

Pat

OK pour :
http://core.spip.org/projects/spip/repository/revisions/18667
Pat