Polskie wsparcie PrestaShop

PrestaShop => Php, Java, Flash => Wątek zaczęty przez: reno123 w Wrzesień 15, 2015, 05:27:12 pm

Tytuł: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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 !
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: west w Wrzesień 15, 2015, 09:22:07 pm
każdy moduł posiada plik lokalizacyjny więc nie koniecznie rozumiem pytanie
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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...
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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 ... :)
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: lustfingers w 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.
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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 :)
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: endriu107 w 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.
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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ę :)
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: reno123 w 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';
Tytuł: Odp: Override Class - jak zrobić tłumaczenia
Wiadomość wysłana przez: lustfingers w 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?