使用zend框架,我和其他许多人一样,发送电子邮件。现在,对于电子邮件,我使用视图模板。 F.X. welcome.phtml 欢迎来到我的网站
Hi <?php print $this->name; ?><br />
Welcome to my site.<br /><br />
Regards <?php print $this->siteName; ?>
现在翻译一下,会有几种方法。 我可以将整个文本墙放在translate();?&gt;中,所有html都会跟随,所以这是一个愚蠢的想法。
其次,我可以将每个电子邮件模板放在语言文件夹fx中。 /languages/en_en/emails/welcome.phtml,并翻译整个文件,html仍然会跟随,但它会更容易。缺点是,如果我有40种语言,并且模板的html发生了变化,我将不得不编辑40个文件。
第三,我可以将每一行放入打印$ this-&gt; translate();但这会产生很多界限。
还有其他方法吗?或者哪种方式做到最好?
一个小问题:如果我的文字墙有一点点格式,一般该怎么办?可能有10行文字,有些单词用粗体表示,还有几行单词?翻译中的整个文本墙(); ?&GT; ?
此致
答案 0 :(得分: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