Polskie wsparcie PrestaShop
PrestaShop => Php, Java, Flash => Wątek zaczęty 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 !
-
każdy moduł posiada plik lokalizacyjny więc nie koniecznie rozumiem pytanie
-
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...
-
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 ... :)
-
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.
-
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 :)
-
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.
-
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ę :)
-
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';
-
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?