2011-02-24 24 views
5

ज़ेंड फ्रेमवर्क का उपयोग करके, मैं, कई अन्य, ईमेल भेजते हैं। अब ईमेल के लिए मैं एक दृश्य टेम्पलेट का उपयोग करता हूं। f.x. welcome.phtml मेरी साइटईमेल टेम्पलेट्स का Zend_Translate अनुवाद

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

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

में आपका स्वागत है अब अनुवाद करने के लिए इस के भी कई तरीके हो जाएगा। मैं पाठ की पूरी दीवार को एक अनुवाद();?> में डाल सकता हूं, सभी एचटीएमएल का पालन करेंगे, इसलिए यह एक गूंगा विचार है।

दूसरा, मैं प्रत्येक ईमेल टेम्पलेट को भाषा फ़ोल्डर, एफएक्स में डाल सकता हूं। /languages/en_en/emails/welcome.phtml, और पूरी फ़ाइल का अनुवाद करें, एचटीएमएल अभी भी पालन करेगा, लेकिन यह आसान होगा। नकारात्मकता यह है कि यदि मेरे पास 40 भाषाएं हैं, और टेम्पलेट के लिए एचटीएमएल बदलता है, तो मुझे 40 फाइलों को संपादित करना होगा।

तीसरा मैं प्रत्येक पंक्ति को एक प्रिंट $ में डाल सकता हूं-> अनुवाद(); लेकिन वह बहुत सारी लाइनें देगा।

क्या अन्य तरीके हैं? या ऐसा करने का कौन सा तरीका सबसे अच्छा है?

एक छोटा सा प्रश्न: आम तौर पर क्या करना है यदि मेरे पास थोड़ा स्वरूपण वाला टेक्स्ट की दीवार है? हो सकता है पाठ की 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 
के साथ प्रतिस्थापित किया जाएगा