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ć 🙂