Magento2 जावास्क्रिप्ट पाठ (KO) टेम्पलेट पाठ का अनुवाद


24

मैं इसमें <!-- ko i18n: 'Store credit available' --><!-- /ko -->मौजूद पाठ के लिए अनुवाद जोड़ने की कोशिश कर रहा हूं vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.html, लेकिन अगर मैं अपने पाठ को बदलने की कोशिश करूं i18n/en_US.csv, तब भी यह काम नहीं कर रहा है।

मैंने कैश फ़्लश कर दिया है और स्थिर सामग्री का उपयोग किया है।

क्या KO टेम्पलेट के लिए अनुवाद जोड़ने का एक अलग तरीका है?

जवाबों:


39

इसलिए मैं आखिरकार समस्या का पता लगाने में सक्षम था।

ऐसा लगता है कि जेएस टेम्पलेट अनुवाद पढ़ा जाता है, js-translation.jsonजो setup:static-content:deployनिष्पादन के दौरान उत्पन्न होता है । इस फ़ाइल में डेटा को पॉप्युलेट करने के लिए प्रोजेक्ट के लिए एक नया भाषा पैकेज बनाना होगा।

इसलिए सीएसवी को थीम स्तर पर जोड़ने की बजाय जैसे app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvहमें इसे भाषा पैकेज में जोड़ना है।

पहले से एक नया भाषा पैकेजproject document root बनाने के लिए हमें निम्नलिखित निर्देशिकाएँ बनाने की आवश्यकता होगी:

mkdir -p app/i18n/<project-name>/<xx_xx>

महत्वपूर्ण : USE लोअरकेस DIRECTORY NAMES केवल कैमसेलडेड फ़ोल्डर नाम से काम नहीं चलेगा

फिर निर्देशिका को नए बनाए गए फ़ोल्डर में बदलें:

cd app/i18n/<project-name>/<xx_xx>

अब आप composer.jsonनिम्नलिखित सामग्री के साथ एक (वैकल्पिक) फ़ाइल बना सकते हैं :

{                                                     
    "name": "<project-name>/<xx_xx>",                             
    "description": "<sample description>", //Ex:English (United States) language
    "version": "<version-number>", //100.0.1                             
    "license": [                                      
        "OSL-3.0",                                    
        "AFL-3.0"                                     
    ],                                                
    "require": {                                      
        "magento/framework": "100.0.*"                
    },                                                
    "type": "magento2-language",                      
    "autoload": {                                     
        "files": [                                    
            "registration.php"                        
        ]                                             
    }                                                 
}                                                     

अगला बनाएं हमें language.xmlनिम्नलिखित सामग्रियों के साथ एक फ़ाइल की आवश्यकता है :

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>xx_XX</code> <!-- example: <code>en_US</code> -->
    <vendor><project-name></vendor>
    <package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>

उसके बाद registration.phpनिम्नलिखित सामग्री युक्त आवश्यक है:

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    '<project-name>_<xx_xx>',
    __DIR__
);

अब हम अपना अनुवाद CSV बना सकते हैं। यदि आपके पास पहले से ही थीम फ़ोल्डर के अंदर एक ऐसा कुछ हैapp/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv आप बस इसे स्थानांतरित कर सकते हैंapp/i18n/<project-name>/<xx_xx>/xx_XX.csv

अब project document rootहमें इन आदेशों को चलाने की आवश्यकता है:

find pub/static -name js-translation.json -exec rm -rf {} \;

हमें इसे हटाने की आवश्यकता है js-translation.json जो चलाने से पहले ही बनाई जा चुकी हैsetup:static-content:deploy

अब हम स्थैतिक सामग्री चलाते हैं:

php bin/magento setup:static-content:deploy <xx_XX>

एक बार जब हम कैश को साफ कर लेते हैं:

php bin/magento cache:clean
php bin/magento cache:flush

हम यह सत्यापित कर सकते हैं कि जेएस टेम्पलेट के लिए अनुवाद फ़ाइलें सभी को खोजने के द्वारा उत्पन्न की गई हैं या नहीं js-translation.json पब / स्टेटिक फ़ोल्डर अंदर ।

find pub/static -name js-translation.json

यह जेएस टेम्पलेट्स के लिए उत्पन्न सभी अनुवाद फाइलों की सूची प्रदान करेगा।

संदर्भ:

  1. Magento DevDocs
  2. संबंधित गितुब अंक

मेरे प्रोजेक्ट में js-translation.jsonफ़ाइलें स्थिर सामग्री से सही तरीके से बनाई गई हैं, भले ही .csv फाइलें अंदर डाली गई हों app/design/frontend/vendor/theme-name/i18n/xx_XX.csvjs-translation.jsonस्थैतिक सामग्री को चलाने से पहले एकमात्र देखभाल को हटा दिया जाता है ।
LucScu

Magento के किस संस्करण पर आप हैं?
आतिश गोस्वामी

वेंडर / थीम तो इस से क्या होना चाहिए <परियोजना-नाम> आपके उपरोक्त कोड के अनुसार ??
कौशल सुथार

1
क्या यह वास्तव में ऐसा करने का एकमात्र तरीका है? मेरा मतलब है, यहां तक ​​कि प्रलेखन ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) का कहना है कि हमें अनुवाद फ़ाइलों को डालने में सक्षम होना चाहिए design/<vender>/<theme>/i18n/xx_XX.csv
गेल ब्रोकर्स

1
Magento 2 में इससे संबंधित बहुत सारे कीड़े हैं, हमारे लिए सबसे अच्छा तरीका यह है कि हम मैन्युअल रूप से एक स्क्रिप्ट बनाएं जो js-translation.jsonफ़ाइल बनाता है और वेब सर्वर कॉन्फ़िगरेशन बनाता है जो इसे सही प्रकार के अनुरोधों पर वितरित करता है
cjohansson

1

जैसा कि मैंने गितुब मुद्दे ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ) में वर्णित किया है, उस समस्या का एक और (आसान) समाधान है।

आपको हर भाषा को अलग से तैनात करने की जरूरत है।

इसलिए उपयोग करने के बजाय:

php bin/magento setup:static-content:deploy en_US de_DE it_IT fr_FR es_ES

उपयोग

php bin/magento setup:static-content:deploy en_US
php bin/magento setup:static-content:deploy de_DE
php bin/magento setup:static-content:deploy it_IT
php bin/magento setup:static-content:deploy fr_FR
php bin/magento setup:static-content:deploy es_ES

यह संभवतः इस तथ्य के कारण है कि static-content:deployकेवल एक बार फाइलों को संकलित करता है और बाद में उन्हें अन्य भाषाओं में कॉपी करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.