wdrożenia PrestaShop

Override Class - jak zrobić tłumaczenia

  • 9 Odpowiedzi
  • 11415 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Override Class - jak zrobić tłumaczenia
« dnia: Wrzesień 15, 2015, 05:27:12 pm »
Witam !


Zrobiłem prosty moduł, który korzysta z mechanizmu override - działa świetnie :)
Kiedy dodałem nowe frazy do jednej z Class (akurat AdminController.php), to pięknie się pojawiły nowe frazy w BO w dziale tłumaczeń gdzie mogę przetłumaczyć na nasz ojczysty język ! OK. Świetnie.  :)


Ale jak teraz spowodować aby przetłumaczone frazy (PL) dodać do wersji instalacyjnej tworzonego modułu ?
Innymi słowy, jak spowodować aby tłumaczenia znalazły się w oddzielnym (innym niż oryginał tłumaczeń class) pliku ?


Z góry dzięki za wszelkie wskazówki !

*

Offline west

  • Administrator
  • Mieszkaniec
  • *****
  • 5,292
  • 106
  • Płeć: Mężczyzna
  • Europasaz.pl
    • PrestaShop, Wordpress, SMF, Woocomerce
  • PrestaShop: 8.0
  • Status: Programista
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #1 dnia: Wrzesień 15, 2015, 09:22:07 pm »
każdy moduł posiada plik lokalizacyjny więc nie koniecznie rozumiem pytanie
MODUŁY | https://europasaz.pl |  SKLEPY INTERNETOWE | WSPARCIE TECHNICZNE | HOSTING | https://europasaz.pl 

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #2 dnia: Wrzesień 16, 2015, 06:37:28 pm »
a więc może na konkretnym przykładzie:
robię override clasy : AdminController.php
dodaje tam string do tłumaczenia - standardowo, po przez $this->l(' something in english');
ta fraza pokazuje się w pliku /translations/pl/admin.php - gdzieś w linii typu "$_LANGADM['AdminController529930e77ec16b28cb0620e7185f2528'] = ' ';"


Do tej pory super, bo mogę wejść w BO i sobie to przetłumaczyć na PL. Ale jak zrobić aby przetłumaczony text, czyli w tym wypadku " coś po polsku" umieścić w pliku " po "stronie modułu" w wersji instalacyjnej. Tak by ktoś kto zakupi  moduł, po jego zainstalowaniu miał już przetłumaczone frazy, a nie tylko puste okna w BO translations ?


Ponoć należy "inaczej" użyć metody tłumaczeń i "przypisać" tłumaczenie do inne pliku , ale to taki martwy trop...

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #3 dnia: Wrzesień 16, 2015, 06:38:26 pm »
a tak w ogóle, to dzięki za odp. bo póki co jesteś jedynym który poruszył temat i to nie tylko na tym forum ... :)

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #4 dnia: Wrzesień 16, 2015, 06:47:00 pm »
Wystarczy zaglądnąć do dowolnego modułu żeby zobaczyc działanie np.

$_MODULE['<{amzpayments}prestashop>amzpayments_eeceac1af4e7620894d6d2083921bb73'] = 'Buy now!';

{amzpayments} - nazwa modułu
amzpayments_eeceac1af4e7620894d6d2083921bb73 - nazwa pliku i zakodowany tekst w MD5 = 'tłumaczenie';

to umieszczasz w katalogu translation i pliku dla danego języka.

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #5 dnia: Wrzesień 16, 2015, 08:01:02 pm »
Dzięki za wskazówkę. Bardzo bym chciał aby to właśnie tak zadziałało.... ale niestety nie. Zwróć uwagę, że użycie $this->l w class skutkuje nieco inaczej niż użycie dokładnie tego samego w module. W module w pliku tłumaczeń pojawia się

$_MODULE['<{amzpayments}prestashop>amzpayments_eeceac1af4e7620894d6d2083921bb73'] = 'Buy now!';
a po użyciu w class w pliku tłumaczeń powstaje

"$_LANGADM['AdminController529930e77ec16b28cb0620e7185f2528'] = ' tłumaczenie';


Ale dla pewności , że Cię dobrze zrozumiałem zrobiłem test :) , czyli tak:

w AdminController dodane mam: $this->l(' something in english');

w pliku: /modules/mój moduł/translations/pl.php daję:

$_MODULE['<{export_orders}prestashop>AdminController_790bce9ca1da9dd40c3fee9837c9b960'] = 'Bombowo generalnie';
oczywiście zgodnie z MD5 :)
« Ostatnia zmiana: Wrzesień 17, 2015, 08:20:43 am wysłana przez west »

*

Offline endriu107

  • user
  • Mieszkaniec
  • *****
  • 1,197
  • 51
  • PrestaShop: PS
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #6 dnia: Wrzesień 16, 2015, 08:56:07 pm »
Tak z ciekawości wrzuciłem ten tekst w md5 generator i wyszło mi co innego niż tobie, czyli 61b1c861339d66a0f02a76936c8d7243 więc może z tym spróbuj, tak swoją drogą ten md5 z przykładu również mi wyszedł inny.

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #7 dnia: Wrzesień 16, 2015, 09:25:36 pm »
Dlatego dopisałem, że wszystko zgodnie z MD5, bo tu w przykładach już nie kopiowałem właściwych kodów. Tak więc moje próby są z poprawnymi kodami.


PS: Dzięki za uwagę :)

*

Offline reno123

  • Nowy
  • *
  • 8
  • 0
  • prestashop
  • PrestaShop: 1.6
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #8 dnia: Wrzesień 16, 2015, 10:57:27 pm »
Dzięki lustfingers


Twoje rozwiązanie nie podziałało, ale naprowadziło mnie na poprawne !
Podaję dla wszystkich chcących zrobić tłumaczenie fraz pochodzących z plików core PS - oczywiśćie jeżeli zależy komuś na tym aby tłumaczenie było dołączone do plików instlacyjcnych tworzonego modułu, bo ogólnie samo tłumaczenie działa bez jakichkolwiek dodatkowych zabiegów.
Otóż, zrobiłem tak:


W pliku który class, który overridowałem utworzyłem swoją private function ll (zamiast oryginalnego l <- litera mała "L")
którą wygląda w moim przypadku dość karkołomnie ale łatwiej się zorientować:



private function ll($string)
    {
          return Translate::getModuleTranslation('nazwa_ABC', $string, 'nazwa_QWE');
    }

Tłumaczenia wywyłuję zatem przez $this->ll ('.... ')


sednem zmiany jest użycie getModuleTranslation zamiast tego co jest we wszystkich kontrolerach getAdminTranslation

następnie już prawie normalnie, w pliku językowym w katalogu modułu:
$_MODULE['<{nazwa_ABC}default-bootstrap>nazwa_QWE_kodMD5TŁUMACZONEJFRAZY '] = 'Tłumaczenie';
« Ostatnia zmiana: Wrzesień 17, 2015, 08:20:03 am wysłana przez west »

*

Offline lustfingers

  • Stały użytkownik
  • ***
  • 92
  • 0
  • PrestaShop: PS
  • Status: forum
Odp: Override Class - jak zrobić tłumaczenia
« Odpowiedź #9 dnia: Październik 02, 2015, 04:59:08 pm »
Jeszcze z ciekawości spytam czy dodanie tych tłumaczeń w override powodowało pokazywanie sie ich w zakładce tłumaczeń panelu admina, czy nie były one tam w ogóle widoczne?