Bonjour, j'ai défini mon objet translate dans mon controller de cette manière :
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);
Pour l'appeller à partir du controller je fais comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->view->translate('La phrase que je veux traduire');
à partir d'une vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo $this->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.,
J'ai essayé de transmettre l'objet $translate à la classe Email en instanciant dans le controller :
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);
j'obtiens le message d'erreur suivant :
Fatal error: Call to undefined method EMail::translate() in … application/models/EMail.php on line 39


Ma classe Email :

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);}	
 
	}
J'ai créé un constructeur qui prend en compte s'il y a un argument ou pas.
Peut-être faudrait-il faire ça avec les helpers ?
Merci pour votre aide.