Forum CMS Made Simple FR
Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Général (https://forum.cmsmadesimple.fr/forum-10.html)
+--- Sujet : Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl (/thread-2591.html)



Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 15/02/2013

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Petite question technique : pour passer les traductions d'un module (perso) aux templates, j'ai croisé 2 méthodes :

1) On crée une variable smarty nommée proprement et à laquelle on assigne une valeur de $this->Lang('...');
2) On passe le module en tant que variable smarty et on utilise directement $this->Lang() dans les templates.

Cette seconde méthode est séduisante car elle réduit parfois considérablement la taille du code d'une action d'un module, mais est-elle réellement recommandable ?

Merci pour vos éclaircissements !

Heriquet


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - jissey - 15/02/2013

Salut Heriquet (petit Eric?),
je n'ai jamais vu la seconde méthode, tu as testé? Parce que $this-> dans un template, ça me parait bizarre...
Ça m'intéresse de savoir dans quel module tu as vu ça.


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 15/02/2013

Salut Jissey,

Je ne retombe pas sur le module (je suis sur 5 projets de front donc...) mais il y avait une variable $mod et le code était $mod->Lang('...').


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 15/02/2013

Trouvé... C'est CGCalendar :

Dans le template :

Code :
[== HTML ==]
<a href="{$event.url}">{$mod->Lang('cal_more')}</a>



Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - jissey - 15/02/2013

houla! intéressant tout ça. Est-ce à dire qu'on peut accéder aux autres méthodes du modules? Cool
Ou il est le Président Développeur General? :p
Il peut nous renseigner?


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 15/02/2013

A priori je dirais oui à partir du moment ou tu passes l'instance du module...

Ceci étant un module de Calguy, j'ose espérer que c'est "propre" de travailler comme ca.

Car cela évite de créer une variable par libellé si tu sais d'avance que tu n'en utiliseras que 10 sur les 60 libellés présents...


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - bess - 15/02/2013

réponse personnelle : les deux sont valable. La seconde a le mérite de faciliter le rôle de développement côté Template comme tu l'as dit

seulement cela peut avoir un coût de montée en mémoire si tu fait un $smarty->assign() car une copie de tous les libellés est passée à smarty. Ma solution est de faire appel à $smarty->assignByRef() qui fait la même chose sans dupliquer en mémoire le contenu des langues.

http://www.smarty.net/docs/en/api.assign.by.ref.tpl

assignByref est également utile pour modifier dans le template à la volée le contenu des variables.... enfin je doute que ce soit vraiment un comportement intéressant Big Grin


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 15/02/2013

Good to now ! Merci.

Bon désormais je risque d'utiliser un peu plus la seconde méthode ;-).


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 18/02/2013

Bon alors j'ai testé le concept dans un module perso et ca marche pas mal...

Dans l'action du module :
Code :
[== PHP ==]

$smarty->assign_by_ref('w2ms',$this);

Dans le template :
Code :
[== HTML ==]
{$w2ms->Lang('estate_view_state')}

Ca marche pas mal et c'est pas moins performant...

Et surtout ca m'évitera d'avoir 150 variables de libellés alors que j'en utilise parfois que 15, en fonction du projet et du template...


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - bess - 18/02/2013

Smile content que ça te serve


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - heriquet - 18/02/2013

J'espère surtout que mon post servira à d'autres ;-).


Bonne pratique pour l'utilisation des libellés (Lang) dans les tpl - airelibre - 18/02/2013

Merci pour l'info Bess, je vais tester l'assignation par référence Wink

Pour le $mod->Lang c'est en effet très pratique pour le développement. Pour ma part, j'ai souvent à la fois le module en cours ($mod) et ma librairie ($aireLibs) dans laquelle je met les termes "génériques" traduits du style "name", "template", etc.. partagés entre les modules