Press "Enter" to skip to content

PrestaShop 1.7.5.0 – problem z tłumaczeniem modułu koszyka (lub innego modułu) w kupionym szablonie

Admin 5

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

  1. włodek włodek

    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?

  2. Rafal Rafal

    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ł?

  3. Piotr Piotr

    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?

    • Admin Admin

      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..

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Jak poprawić nieznośny błąd z kodowaniem polskich znaków w PrestaShop…