2013-01-18 14 views
6

मैं Prestashop 1.5 के लिए एक मॉड्यूल के विकास कर रहा हूँ।PrestaShop ईमेल स्थानीयकरण

मैं इस तरह ईमेल भेज रहा हूँ (प्रलेखन वास्तव में याद आ रही है, मैं अन्य डिफ़ॉल्ट घटकों का अध्ययन किया और इस मैं अब तक मिल गया है)

Mail::Send(
          $this->context->language->id, //int $id_lang 
          'template_name',//string $template 
          //Mail::l('Hello', $this->context->language->id),//string $subject 
          $this->l('Email subject'),//string $subject 
          array('{discount}' => $code, 
            '{firstname}' => $customer['firstname'], 
            '{lastname}' => $customer['lastname'], 
            '{img_url}' => $img_url, 
            '{valid_days}' => $form['days_valid'] 
          ),//string $template_vars 
          $customer['email'],//string $to 
          implode(' ', array_filter(array($customer['firstname'], $customer['lastname']))), 
          strval(Configuration::get('PS_SHOP_EMAIL')),//string $from 
          strval(Configuration::get('PS_SHOP_NAME')),//string $from_name 
          /* null,//string $from 
          null//string $from_name */ 
          null,//array $file_attachment 
          null,//$mode_smtp 
          $template_path//string $template_path /*__PS_BASE_URI__.'modules/'.$this->name.'/mails/' */ 

        ); 

नोट मैं

Mail::l('Hello', $this->context->language->id),//string $subject 

और का उपयोग कर की कोशिश की

$this->l('Email subject'),//string $subject 
ईमेल के विषय के रूप में

और मुझे मिल रही है "कोई विषय के लिए मिला था ..."। ग्राहक को प्राप्त करने वाला हार्डकोडेड स्ट्रिंग जो मैं स्रोत कोड में डालता हूं।

तो कैसे इस त्रुटि से छुटकारा पाने के: enter image description here प्लस ईमेल जाहिरा तौर पर यादृच्छिक भाषा में भेजे जाते हैं (कभी कभी अंग्रेज़ी, कभी कभी इतालवी)।

उत्तर

3

अपने मॉड्यूल में आप विषय पैरामीटर में मेल :: एल() का उपयोग करना चाहिए। यहाँ मेल का एक उदाहरण है ::() भेजें एक मॉड्यूल के लिए:

Mail::Send($this->context->language->id, 
    'test', 
    Mail::l('test subject', $this->context->language->id), 
    array(), 
    $to_email); 

यहाँ कैसे ईमेल अनुवाद काम कर रहा है:

AdminTranslationsController में जाँच करेगा "/ मॉड्यूल/[मॉड्यूल फ़ोल्डर]/मेल/"विषयों के लिए टेम्पलेट्स और" /mails/[lang]/lang.php "में। अनुवाद सबमिट करते समय विषय बनाए जाएंगे।


यदि ऐसा नहीं होता है, तो शायद यह फ़ोल्डर के अधिकारों में एक समस्या है। इस फ़ाइल को खोलने:

/prestashop/mails/it/lang.php

और अगर वहाँ इस तरह एक लाइन है की जाँच करें:

$_LANGMAIL['Email subject'] = 'translation in italian'; 

यदि नहीं, तो इस फाइल और माता पिता के फ़ोल्डरों पर वेब सर्वर अधिकार की जाँच करें।

+0

लेकिन मैं इस स्थापित घटक पर स्वचालित रूप से किया और एक तरह से है कि यह उपयोगकर्ता कुछ लेबल – max4ever

+0

को संशोधित करना चाहिए यह कार्य स्वचालित रूप से अगर आप 'का उपयोग मेल :: एल ('ईमेल विषय', $ इस- हटा दिया जाता है नहीं करता है में की जरूरत है > संदर्भ-> भाषा-> आईडी) 'मेल :: विषय के विषय पैरामीटर में। – SJousse

+0

मैं मॉड्यूल का विस्तार कर रहा हूं और आप नियंत्रकों के बारे में बात कर रहे हैं, कुछ सही नहीं है – max4ever

2

मैं अब एक ही Prestashop संस्करण 1.5.5.0 के साथ काम कर इस मुद्दे पर आ गया है।

कुछ परिस्थितियों में, getSubjectMail() विधि ईमेल टेम्पलेट पहचान नहीं करेगा, ताकि वह इस विषय के साथ मिलान नहीं किया जा सकता है। पूरा मुद्दा यह है कि जब यह विधि विषयों का अनुवाद करने की तलाश करती है, तो यह php फ़ाइलों को सादा पाठ के रूप में पार्स करती है। इसलिए सभी चर अनसुलझे पार्स किए जाते हैं।

मेरे मामले में, मैं मेल फोन कर रहा हूँ: मॉड्यूल के नियंत्रक से भेजें और की तरह यह लग रहा है:

Mail::Send(
    $id_lang, 
    $template, // <- don't use variable here, rather type email template there directly. 
    Mail::l('Message from footer contact form'), 
    $template_vars, 
    $contact->email, 
    $contact->name, 
    ($is_email ? $from : Configuration::get('PS_SHOP_EMAIL')), 
    '', 
    null, // file attachment 
    null, // mode smtp 
    $this->module->_mailpath 
); 

मेल टेम्पलेट को यह फ़ाइल मिलान विषय में परिणाम होगा पाद संपर्क फार्म से संदेश पार्स "टेम्पलेट $"। जो स्पष्ट रूप से अस्तित्व में नहीं है।

यह सुनिश्चित करने के लिए कि आपका विषय सही ढंग से पहचाना जाएगा, टेम्पलेट नाम पास करने के लिए चर का उपयोग न करें।

+0

कुंजी एक चर का उपयोग नहीं है !! PrestaShop से आश्चर्यजनक रूप से खराब डिजाइन, और अस्पष्ट सीमा। – mcdado

1

ईमेल टेम्पलेट्स (और न केवल उन्हें) प्रेस्टा में पूरी तरह गन्दा हैं। चूंकि मैंने एक कस्टम थीम स्थापित की है, इसलिए अब मुझे 6 (!!) विभिन्न स्थानों में है।

ऐसी कोई परेशानी नहीं होगी, लेकिन ऐसा लगता है कि मेरे जैसा ही उलझन में आता है। यह टेम्पलेट्स को एक स्थान से संपादित करने के लिए लेता है, उन्हें बदले में दूसरे स्थान पर सहेजता है, और वास्तव में मेल बनाते समय उन्हें तीसरे स्थान (मॉड्यूल के लिए) ले जाता है।

परिणामस्वरूप मैं एक बार टेम्पलेट को संपादित करने में सक्षम था, लेकिन इसे सहेजने के बाद, इसे वापस लाया गया, क्योंकि यह वास्तव में किसी अन्य स्थान पर सहेजा गया था।

तो मैंने जो किया है: मैंने डिफ़ॉल्ट थीम फ़ोल्डर (दोनों फ़ोल्डर 'मेल' और 'मॉड्यूल/मेललर्ट/मेल') और मेरी कस्टम थीम से मॉड्यूल ("मेललर्ट") के लिए टेम्पलेट को हटा दिया है।

यदि आप ऐसा करते हैं - तो बस उन्हें हटाने से पहले एक प्रतिलिपि रखें, क्योंकि आप शायद पहले से बनाए गए कुछ अनुवादों को खो देंगे।

एक के लिए तय है और केवल एक स्थान जहाँ आप चाहते हैं उन्हें (मेरे लिए यह मूल 'मेल' resp 'मॉड्यूल' फ़ोल्डरों थे) रखने के लिए और उन्हें तो यह एक स्थान से बाद में केवल संपादित करें। यहां उल्लिखित स्थानों के लिए आप "अनुवाद" व्यवस्थापक पृष्ठ पर ड्रॉपडाउन से "कोर" विकल्प चुनते हैं।

संबंधित मुद्दे