2011-02-24 83 views
5

使用zend框架,我和其他人一样发送电子邮件。现在,我使用视图模板的电子邮件。 F.X. welcome.phtml 欢迎来到我的网站Zend_翻译电子邮件模板

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

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

我们翻译这个会有几种方式。 我可以把整个墙的文本放在translate();?>中,所有的html都会跟随,所以这是一个愚蠢的想法。

其次,我可以把每个电子邮件模板放在语言文件夹fx​​中。 /languages/en_en/emails/welcome.phtml,并翻译整个文件,html仍然会遵循,但它会更容易。缺点是,如果我有40种语言,模板的html更改,我将不得不编辑40个文件。

第三,我可以把每一行打印$ this-> translate();但是这会产生很多线条。

还有其他方法吗?或者哪种方式做到最好?

一个小问题:如果我有一个文本的墙壁有点格式化通常要做什么?也许10行文字,有些词语粗体,还有几个
的?整个翻译文本的墙(); ?>?

问候

回答

5

一个Zend_Translate支持占位符,所以你也可以尝试像你的翻译源来创建一个消息:

// 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 

,如果你的数据是:

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

你只可以调用翻译方法

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

和“%s”将被实际数据替换

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