Bonjour, j'ai défini mon objet translate dans mon controller de cette manière :
Pour l'appeller à partir du controller je fais comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $translate = new Zend_Translate('gettext',$basePath.'application/languages/',$code_language ); $translate->setLocale($langLocale); $frontendOptions = array('lifetime' => 3600, // temps de vie du cache 'automatic_serialization' => true); $backendOptions = array('cache_dir' => '/tmp/'); // créer un objet Zend_Cache_Core $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); $translate->setCache($cache); Zend_Registry::set('Zend_Translate', $translate); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translate);
à partir d'une vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->view->translate('La phrase que je veux traduire');
Mais j'ai une classe EMail et je voudrais traduire une phrase qui répéte du genre «*cordialement*» à la fin du mail.,
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $this->translate('La phrase que je veux traduire');
J'ai essayé de transmettre l'objet $translate à la classe Email en instanciant dans le controller :
j'obtiens le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $e=new Email($translate); $e->simple($email_client, $email_client, 'Vos identifiants', $txt);
Fatal error: Call to undefined method EMail::translate() in … application/models/EMail.php on line 39
Ma classe Email :
J'ai créé un constructeur qui prend en compte s'il y a un argument ou pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 class EMail { private $config = array(...); private $serveur_envoi = '...'; private $noreply = '...'; private $translate; private $locale; function __construct() { $num=func_num_args(); switch($num) { case 0: $this->translate=new Zend_View_Helper_Translate(); break; case 1: $translate=func_get_arg(0); $this->translate=$translate; break; default: } } function simple($email_dest,$lib_dest,$sujet,$message ) { $mail = new Zend_Mail(); $message=$message.'<br><br>'.$this->translate('Cordialement').'.'; // $mail->setBodyHtml($message); $mail->setFrom($this->noreply, 'noreply'); $mail->addTo($email_dest, $lib_dest); $mail->setSubject($sujet); $transport = new Zend_Mail_Transport_Smtp($this->serveur_envoi, $this->config); try { $mail->send($transport); } catch (Exception $e) {echo('Pb dans l\'envoi du mail à '.$email_dest);} }
Peut-être faudrait-il faire ça avec les helpers ?
Merci pour votre aide.
Partager