Je viens de tester en local une fonction _TT() ajouter à bonux (avec création au passage d'un spip_bonux_options.php).
Cette fonction regarde si le champs $texte qu'on lui passe est une chaîne de langue sous la forme module:chaine . (On reprend ainsi la convention d'écriture déjà utilisée pour les boutons mais également dans le plugin menus depuis 33428).
On applique donc traduire() à $texte qui renvoie la traduction de la chaine de langue dans la langue courante si elle existe, dans une autre langue sinon.
Si jamais il ne s'agit pas d'une chaîne de langue, alors on renvoie typo($texte).
Comme pour _T, on peut passer des arguments.
J'ai tester la modif sur les plugins menus et compositions. Je n'ai pas rencontré de bug.
Puis-je commiter tel quel ou préférez-vous que des sabots soient posés sur les trois plugins ?
Pour info, voici le code de _TT() :
/**
* une fonction qui regarde si $texte est une chaine de langue
* si oui applique _T()
* si non applique typo()
*/
function _TT($texte, $args=array()) {
static $traduire=false ;
if (!$traduire) {
$traduire = charger_fonction('traduire', 'inc');
include_spip('inc/lang');
}
$text = $traduire($texte,$GLOBALS['spip_lang']);
if (!strlen($text)){
// C'est ici que l'on modifie la fonction
include_spip('inc/texte');
$text = typo($texte);
}
if (is_array($args))
foreach ($args as $name => $value)
$text = str_replace ("@$name@", $value, $text);
return $text;
}
Cordialement
joseph
Le 03/02/2010 14:44, cedric.morin@yterium.com a écrit :
Oui mais tu peux déjà la mettre dans spip-bonux pour la tester et la valider, et si il est encore temps, on l'intègre dans la 2.1 avant sa release stable.
Cédric
Le 3 févr. 2010 à 15:39, Joseph a écrit :
Le 03/02/2010 12:29, RastaPopoulos a écrit :
Ce qu'il faut c'est une fonction "générique" à utiliser sur une valeur,
n'importe laquelle, et qui teste si c'est une chaine de langue, ou un
<multi> ou etc. Et qui le fait proprement.
Ensuite on pourra appeler cette fonction dans plusieurs cas différents.
L'intérêt d'une telle fonction, c'est qu'elle amènera à une écriture générique entre différents plugins.
La question est donc de savoir où elle est censée être déclarée. Je suppose dans le core ?
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone