[SPIP] ~v3.0.12-->3.0.13
[ptitvelo/web/www.git] / www / ecrire / public / compiler.php
index b158673..48ae4ba 100644 (file)
@@ -867,11 +867,28 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle) {
 
                case 'idiome':
                        $l = array();
+                       $code = '';
                        foreach ($p->arg as $k => $v) {
-                         if ($k) $l[]= _q($k).' => '.calculer_liste($v,$p->descr,$boucles,$id_boucle);
+                               $_v = calculer_liste($v, $descr, $boucles, $id_boucle);
+                               if ($k) {
+                                       $l[] = _q($k) . ' => ' . $_v;
+                               } else {
+                                       $code = $_v;
+                               }
+                       }
+                       // Si le module n'est pas fourni, l'expliciter sauf si calculé
+                       if ($p->module) {
+                               $m = $p->module .':'.$p->nom_champ;
+                       } elseif ($p->nom_champ) {
+                               $m = MODULES_IDIOMES .':'.$p->nom_champ;
+                       } else {
+                               $m = '';
                        }
-                       $l = !$l ? '' : (", array(".implode(",\n",$l).")");
-                       $code = "_T('" . $p->module . ":" .$p->nom_champ . "'$l)";
+                       $code = (!$code ? "'$m'" :
+                                               ($m ? "'$m' . $code" :
+                                                       ("(strpos(\$x=$code, ':') ? \$x : ('" . MODULES_IDIOMES . ":' . \$x))")))
+                                       . (!$l ? '' : (", array(" . implode(",\n", $l) . ")"));
+                       $code = "_T($code)";
                        if ($p->param) {
                                $p->id_boucle = $id_boucle;
                                $p->boucles = &$boucles;