Magento 2 „Item in Cart” translation – nie działa!

Magento nie jest polskim produktem, co za czym idzie by móc z niego korzystać w ojczystym języku należy pobrać tłumaczenie pl_PL a te bywają różne bądź ich brakuje. Umiejętność tłumaczenia na własną rękę niektórych fraz przydaje się również wtedy, gdy rozszerzamy istniejące moduły i dodajemy coś od siebie.

Przeglądając „internety” spotkałam się z ciekawym problemem nie działającego tłumaczenia dla „Item in Cart” w sidebarze koszyka. Postanowiłam wypróbować sztuczki, które znalazłam na forum i faktycznie nie działały. Jest sporo różnych sposobów nanoszenia tłumaczeń ale w tym konkretnym przypadku ( jak już pisałam we wcześniejszym wpisie dot. nadpisywania szablonów magento ) problem leżał w fakcie, że html ten doczytywany jest asynchronicznie.

Tłumaczenia do niego znaleźć można było a raczej ich brakowało w pliku:

pub/static/frontend/<namespace>/<theme>/pl_PL/js-translation.json

Rozwiązaniem okazało się stworzenie language pack’u:

mkdir -p app/i18n/<project>/<code>
cd app/i18n/<project>/<code>

za „project” przyjmuje się np nazwę sklepu / przestrzeni nazw przyjętej w projekcie dla kodu lokalnego a za code – kod języka np. pl_pl

W katalogu tym tworzymy pliki:
composer.json

{                                                     
    "name": "<project-name>/<xx_xx>",      //np. sklep/pl_pl                       
    "description": "", //np. polska wersja językowa
    "version": "", //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> <!-- np. <code>pl_PL</code> -->
    <vendor><project-name></vendor> <!-- np. <vendor>sklep</vendor> -->
    <package><xx_xx></package> <!-- np. <package>en_us</package> -->
</language>

registration.php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    'sklep_pl_pl',
    __DIR__
);

oraz pl_PL.csv z tłumaczeniami:

'Item in Cart', 'produkt w koszyku'
'Items in Cart', 'produkty w koszyku'

Następnie w katalogu root projektu wykonujemy polecenia:

find pub/static -name js-translation.json -exec rm -rf {} \;
php bin/magento setup:static-content:deploy pl_PL
php bin/magento cache:clean
php bin/magento cache:flush

Po odświeżeniu strony tłumaczenia powinny się pojawić 🙂