2011-02-24 9 views
5

Usando Zend Framework, yo, como muchos otros, envío correos electrónicos. Ahora, para el correo electrónico, uso una plantilla de vista. f.x. welcome.phtml Bienvenido a mi sitioZend_Translate traducción de plantillas de correo electrónico

Hi <?php print $this->name; ?><br /> 
Welcome to my site.<br /><br /> 

Regards <?php print $this->siteName; ?> 

Ahora traducir esta no sería de varias maneras. Podría poner todo el muro de texto en un translate();?>, Todo lo que el html seguiría, así que es una idea tonta.

En segundo lugar, podría poner cada plantilla de correo electrónico en la carpeta del idioma, fx. /languages/en_es/emails/welcome.phtml, y traducir todo el archivo, el html seguiría, pero sería más fácil. La desventaja es que si tengo 40 idiomas y el html para la plantilla cambia, tendré que editar 40 archivos.

En tercer lugar, podría poner cada línea en una impresión $ this-> translate(); pero eso daría muchas líneas.

¿Hay otras formas? ¿O qué forma de hacer esto es la mejor?

Una pequeña pregunta: ¿Qué hacer generalmente si tengo un muro de texto con un poco de formato? tal vez 10 líneas de texto, con algunas palabras en negrita, y algunas
's? Toda la pared de texto en un translate(); ?>?

Saludos

Respuesta

5

Zend_Translate es compatible con marcadores de posición, lo que también puede tratar de crear un mensajes en el origen de la traducción como:

// NOTE: this is only wireframe, working code depends on your translation adapter format 
"message-id" => "Hi %s<br /> Welcome to my site.<br /><br /> Regards %s"  // en 
"message-id" => "Hallo %s <br/>Willkommen auf meiner Website.<br/><br/>Regards %s" // de 

y si sus datos son:

name => 'John' 
siteName => 'MySite.com' 

que acaba puede llamar al método de traducción

$mailBody = $this->translate('message-id', $this->name, $this->siteName); 

y "% s" se reemplazarán con los datos reales

Hi John<br /> Welcome to my site.<br /><br /> Regards MySite.com 
Cuestiones relacionadas