Zawartość artykułu
Nowy mechanizm tłumaczeń
W wersji 1.7.x oprogramowania PrestaShop przebudowano system tłumaczeń modułu. Tzn. częściowo się on zmienił, bo niektóre moduły korzystają jeszcze ze.. starego sposobu.
W każdym razie w sekcji
Ulepszenia -> Międzynarodowy -> Tłumaczenia
Mamy formularz, gdzie wybieramy nasz szablon albo interesujący nas moduł.
Należy tutaj zaznaczyć, że nasz zespół nie jest zwolennikami tej „dobrej zmiany”… Szczególnie, jak mamy bardzo dużo modułów – ciężko każdy tłumaczyć z osobna lub w ogóle znaleźć interesującą nas frazę. Kiedy wszystkie były na jednej stronie – można było je rozwinąć i od razu ją znaleźć. Co prawda napotykało to problem max_input_vars, ale większość hostingów już to wspierało.
Tak czy inaczej jakoś musimy żyć z nowym systemem tłumaczeń, jeśli chcemy cieszyć się wersją 1.7.x. Przebudowany mechanizm tłumaczeń nie jest niestety wolny od błędów..
Problem z tłumaczeniem modułu w PrestaShop 1.7.x
Poniżej sposób na obejście irytującego problemu, w którym nie można znaleźć fazy do tłumaczenia. Tutaj – frazy w module koszyka.
To oczywiście tylko przykład – Twój moduł może być zupełnie inny. Przedstawimy tutaj kolejno występujący problem i metodę jego rozwiązania. Analogicznie możesz postąpić w Twoim przypadku.
Wersja PrestaShop na której było to wykonywane to: 1.7.5.0.
Na początek wyłączamy cache’owanie szablonu, wykonuje się to analogicznie jak w przypadku wersji 1.6.x:
Zaawansowane -> Wydajność.
Do przetłumaczenia jest przycisk „Checkout Now!„. Występuje on w rozwijanym module koszyka:
Wchodzimy w w/w dział do tłumaczenia i wybieramy moduł „Koszyk”:
Wciskamy przycisk „Modyfikuj”:
Niestety próżno tu szukać naszej frazy „Checkout Now!” do przetłumaczenia.. Jedynie są frazy z admina:(
Naprawa niedziałającego tłumaczenia modułu w PrestaShop 1.7
Jest jednak wyjście z tej sytuacji. Dość niestandardowe. Ale działa:) Aby to przetłumaczyć musimy posłużyć się innym modułem. Raczej nie będzie to moduł „wbudowany” w PrestaShop. Musi to być moduł który został zainstalowany wraz z zakupionym szablonem.
W naszym przypadku będzie to moduł do logowania z górnej belki:
Znajdujemy jego tłumaczenie w systemie tłumaczeń. W tym przypadku znalazł się on w tłumaczeniach szablonu:
U Ciebie może być to zupełnie inny moduł i jego tłumaczenie może być zupełnie gdzie indziej – zasada pozostaje ta sama.
Następnie odnajdujemy wystąpienie frazy z blelki „Login or register” w pliku tpl:
<a class="ttvdesktop-view-login" href="{$my_account_url}" title="{l s='Log in to your customer account' d='Shop.Theme.Customeraccount'}" rel="nofollow" > <span class="hidden-md-down">{l s='Login Or Register' d='Shop.Theme.Actions'}</span> <i class="ion-android-contact hidden-lg-up"></i> </a>
Tutaj był to plik:
themes/{SZABLON}/modules/ps_customersignin/ps_customersignin.tpl
Następnie po prostu dopisujemy (w dowolnym miejcu) naszą problematyczną frazę:
{l s='Checkout Now!' d='Shop.Theme.Actions'}
której nie możemy przetłumaczyć w module koszyka.
<a class="ttvdesktop-view-login" href="{$my_account_url}" title="{l s='Log in to your customer account' d='Shop.Theme.Customeraccount'}" rel="nofollow" > <span class="hidden-md-down">{l s='Login Or Register' d='Shop.Theme.Actions'}</span> {l s='Checkout Now!' d='Shop.Theme.Actions'} <i class="ion-android-contact hidden-lg-up"></i> </a>
Uwaga! Należy ją dopisać dokładnie na tej samej zasadzie, co znaleziony tekst (tutaj) „Login Or Register„. Czyli (tutaj) dodać atrybut: d=’Shop.Theme.Actions’. W ten sposób bedzie można ją analogicznie do frazy z belki przetłumaczyć.
Następnie odnajdujemy plik tpl z problematyczną frazą, której nie możemy przetłumaczyć. Czyli kod przycisku z napisem „Checkout Now!„.
W naszym przypadku był to plik:
themes/{SZABLON}/modules/ps_shoppingcart/ps_shoppingcart.tpl
Wklejamy w wybranym miejcu (tekst przycisku) ten sam kod:
{l s='Checkout Now!' d='Shop.Theme.Actions'}
który dopisaliśmy do pliku tpl górnej belki. Czyli np.:
<div class="ttvcart-product-list-checkout"><a href="{$cart_url}">{l s='Checkout Now!' d='Shop.Theme.Actions'}</a></div>
Po odświeżeniu szablonu widzimy tę frazę w niestandardowym miejscu (spokojnie, zaraz ją usuniemy):
Wchodzimy ponownie do miejsca, gdzie mogliśmy przetłumaczyć „Login Or Register” i i po odświeżeniu strony admina wpisujemy tam naszą frazę: „Checkout Now!”. Następnie tłumaczymy ją i zapisujemy:
Następnie usuwamy fragment kodu:
{l s='Checkout Now!' d='Shop.Theme.Actions'}
z pliku:
themes/{SZABLON}/modules/ps_customersignin/ps_customersignin.tpl
dotyczącego górnej belki.
Tłumaczenie mimo, że fraza zniknie z tego pliku – pozostanie w bazie danych. Ku naszej uciesze – w bloku koszyka tłumaczenie też powinno się pojawić:
Nie da się ukryć, że jest to sposób rozwiązania problemu na około. Jednak co ważniejsze działa i pozwoli obejść niedoskonałości systemu tłumaczeń w wersji PrestaShop 1.7.5.0.
Jeśli masz inne sposoby radzenia sobie z tym problemem – podziel się nimi w komentarzu pod artykułem lub na naszym Facebooku.
Postscriptum
Po dokładnej analizie bazy danych MySQL naszego sklepu możemy zaobserwować, że wyżej zaprezentowane modyfikacje skutkują dodaniem nowych wpisów w tabeli pr_translation:
Czyli przy odpowiednim zapytaniu SQL dodającym nowy wiersz w tym miejscu – teoretycznie możemy od razu dodać takie tłumaczenie. Jednak jest to temat na osobny artykuł, bo nie było to przez nasz zespół dokładnie sprawdzane.
grafika: wallpapercave.com
Witam
Podczas rejestracji klient wpisuje swoje dane,imię,nazwisko….. i adres. Dla mnie jest to bardzo mylące gdyż sam rejestrując się w jakimś sklepie wpisuję w tym miejscu miasto zamieszkania. A powinna być ulica.
Więc pytanie jest następujące,jak zamienić w tym formularzu słowo adres na ulica?
Cześć!
mam podobny problem z tłumaczeniem ale w innym miejscu.
Mianowicie po najechaniu na obrazek z produktem wysuwa się pole z opcją ” ADD TO CART”.
Jakiś pomysł?
Mam problem z brakiem tłumaczenia „subcategories” i „Best sellers” w templatce Classic; („Best sellers” jest po prostu błędem, bo „Bestsellers” jest tłumaczone prawidłowo). Próbowałem to rozwiązać w podany powyżej sposób, ale raczej nie wyszło. Czy tu nie ma analogii i trzeba innego sposobu?
upewnij się @Piotr czy w szablonie jest ten element dodany do tłumaczeń czy nie jest po prostu wstawiony na „sztywno” po angielsku. Jeśli jest dodany podążaj za oznaczeniem w tym tłumaczeniu. Np. Global.actions itd. Musisz niestety przeszykać wszystkie elementy w module tłumaczeń, bo czasem ta sama fraza się powiela..
[…] PrestaShop 1.7.5.0 – problem z tłumaczeniem modułu koszyka (lub innego modułu) w kupionym s… […]