2011-02-24 85 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