2012-05-22 18 views
7

में कुछ शब्दों के लिए विफल रहता है मैं अपने Magento स्थापना (संस्करण 1.6.2.0) के लिए एक कस्टम मॉड्यूल विकसित कर रहा हूँ। मैंने config.xml में मॉड्यूल के लिए एक अनुवाद फ़ाइल पंजीकृत की और जर्मन अनुवाद जोड़ने लगे। मॉड्यूल Magento बैक एंड में कुछ नया व्यवहार जोड़ता है।कस्टम अनुवाद फ़ाइल के साथ अनुवाद Magento

अनुवाद करते समय मैंने Magento का एक अजीब व्यवहार देखा। मैगेंटो द्वारा कुछ शब्दों का अनुवाद नहीं किया जाता है हालांकि मॉड्यूल की सीएसवी फ़ाइल में एक अनुवाद प्रदान किया जाता है।

जब मैं एक अलग मूल्य पर कुंजी बदलता हूं, तो अनुवाद अपेक्षित काम करता है, इसलिए Magento सीवीएस फ़ाइल को देखने और पढ़ने लगता है।

इस समय मैं "सिटी" और "स्टोर" कुंजी के लिए यह व्यवहार देखता हूं। csv फ़ाइल के

सामग्री:

"City","Stadt" 
"City1","Stadt" 

मैं स्ट्रिंग का अनुवाद करने निम्न पंक्ति का उपयोग करें।

Mage::helper('mymodule')->__('City') // returns "City" 

जब मैं "सिटी 1" की कुंजी बदलता हूं तो हर चीज़ अपेक्षा के अनुसार काम करती है।

Mage::helper('mymodule')->__('City1') // returns "Stadt" 

इस के बाद मैं कुंजी "शहर" के लिए एक अनुवाद के लिए जर्मन अनुवाद csv फ़ाइलें (जर्मन Magento समुदाय द्वारा प्रदान की) की खोज और "adminhtml मॉड्यूल" में एक मिल गया।

Mage::helper('adminhtml')->__('City') // returns "Stadt" 

तो यह भी अपेक्षित काम करता है।

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

इस पर कोई विचार?

+0

क्या आपके पास 'mymodule' के कॉन्फ़िगरेशन (config.xml) में अनुवाद अनुभाग है? Magento आमतौर पर अन्य मॉड्यूल पर वापस आ जाता है, अगर यह कॉन्फ़िगर किए गए सीएसवी के भीतर एक एप्रोपिएट अनुवाद नहीं मिल रहा है, तो यह समस्या हो सकती है। – Florian

+1

हाँ मेरे पास मॉड्यूल की कॉन्फ़िगरेशन फ़ाइल में ऐसा कोई अनुभाग है अन्यथा अनुवाद कुंजी 'सिटी 1' के साथ काम नहीं करना चाहिए। लेकिन यह 'सिटी 1' अनुवाद कार्यों के साथ मामला नहीं है। – Flo

उत्तर

8

अंत में मैं अनुवाद समस्या हल को रोकने के लिए संपादित करें। कारण config.xml में गलत कॉन्फ़िगरेशन था। मैंने कोड को डीबग करके इसे पाया जहां Magento अनुवाद फ़ाइलों में पढ़ता है।जब ऐसा होता है तो स्कोप नामक पैरामीटर होता है जिसे config.xml फ़ाइल के XML तत्वों में से एक से पढ़ा जाता है।

इस तत्व में आमतौर पर मॉड्यूल का नाम होना चाहिए, उदा। <MyCompany_MyModule>। ट्यूटोरियल में मैंने अनुवाद को कॉन्फ़िगर करने के बाद अनुसरण किया, इस XML-element को <translations> नाम दिया गया था जो गलत था।

मुझे लगता है कि यह Magento के पहले संस्करण के लिए सही हो सकता है। यह पता लगाने में मुश्किल हुई कि त्रुटियां केवल उन चाबियों के लिए होती हैं जिन्हें अन्य मॉड्यूल की अनुवाद फ़ाइलों में भी परिभाषित किया गया था। कुंजी जो केवल मेरी अनुवाद फ़ाइल में परिभाषित की गई थी, अपेक्षित थी।

एक सही कॉन्फ़िगरेशन इस तरह दिखना चाहिए।

<frontend> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</frontend> 
<adminhtml> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</adminhtml> 
+0

इसे पोस्ट करने के लिए धन्यवाद - मैंने 'डिफ़ॉल्ट' टैग को याद किया क्योंकि प्रत्येक पृष्ठ पर कुछ foreach त्रुटि उत्पन्न हुई। – Theodores

+0

यह कौन सी मूल फ़ाइल है जहां आपने डीबगिंग जोड़ा है? मेरे पास एक ही समस्या है और एक ही कॉन्फ़िगरेशन सेटिंग्स हैं लेकिन कुछ शब्द अभी भी एक और अनुवाद फ़ाइल से लिया गया है। – Guus

4

हाथ में अपना कोड दिए बिना कहना मुश्किल है, लेकिन मेरा अनुमान यह होगा कि आपके मॉड्यूल का अनुवाद क्षेत्र किसी भी तरह से खो जाता है (किसी भी कारण से) Magento को फ़ॉलबैक करने का कारण बनता है।

AFAIK, Magento में 1.6.2.0 निम्नलिखित अनुवाद फ़ाइलें भी परिभाषित कुंजी City:

/app/locale/<language>_<region>/Mage_Checkout.csv 
/app/locale/<language>_<region>/Mage_Customer.csv 
/app/locale/<language>_<region>/Mage_Persistent.csv 
/app/locale/<language>_<region>/Mage_Sales.csv 
/app/locale/<language>_<region>/Mage_Shipping.csv 
/app/locale/<language>_<region>/Mage_XmlConnect.csv 

मैं अनुवाद, एक-एक करके इन .csv फाइलों में City के लिए बदलने के लिए खोजने की कोशिश करता हूँ जहां प्रश्न में अनुवाद वास्तव में आ रहा है।

एक बार जब आप पाया करने के लिए फ़ाइल जो Magento वापस गिर रही है, तो आप भी पता है, जो अनुवाद गुंजाइश आप ओवरराइड करने के लिए, City की आपके अनुवाद करने के लिए किया जाना चाहिए।

उदाहरण के लिए, यदि आप Mage_Shipping.csv में अनुवाद बदलते मिल को प्रभावित करता है, तो आप अपने अनुवाद फ़ाइल (My_Module.csv)

"Mage_Shipping::City","Stadt" 
+0

जब मैं इनलाइन अनुवाद को सक्रिय करता हूं तो मैं देख सकता हूं कि दायरा मेरे मॉड्यूल पर सही ढंग से सेट है। मैंने कुछ डीबगिंग भी की और कोड का पालन किया जब तक कि सभी अनुवादों के साथ सरणी नहीं है, मुझे लगता है कि मॉड्यूल के दायरे के लिए, कुंजी "सिटी" की खोज है जिसके परिणामस्वरूप कोई प्रविष्टि नहीं मिली और इसलिए मूल स्ट्रिंग का उपयोग किया जाता है । मैं सोच रहा हूं कि क्यों कुंजी गायब है। लेकिन मैं आपके सुझाव का प्रयास करूंगा और देखें कि क्या होता है। – Flo

+0

मैंने आपके निर्देश का पालन किया लेकिन यह केवल पुष्टि की कि मुझे क्या चाहिए। मैंने प्रत्येक फ़ाइल में अनुवाद को एक अलग मूल्य में बदल दिया लेकिन उनमें से कोई भी यूआई में दिखाई नहीं दिया। तो यह मेरी धारणा के अनुरूप है कि शब्द का अनुवाद नहीं किया गया है क्योंकि कोई अनुवाद नहीं मिल सकता है। – Flo

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