Lokalizacja Magento2 Javascript

16

Podobne pytanie zostało już zadane tutaj: tłumaczenia tekstów javascript Magento 2 , ale Magento zaktualizowało tę technikę tłumaczenia w wersji beta.

Jak mogę dodać lub zaktualizować tłumaczenia używane przez Javascript?

Doszedłem do wniosku, że Magento tworzy plik o nazwie „js-translation.json” w folderze statycznym. Jeśli edytuję ten plik bezpośrednio, widzę, że moje tłumaczenia są aktualizowane. Ale gdzie jest tworzony ten plik i jak mogę dodawać tłumaczenia, aby Magento automatycznie dodawał to do pliku js-translation.json po wygenerowaniu?

Aktualizacja

Prawidłowa odpowiedź na to pytanie wciąż nie jest podana, chociaż Mage2.PRO wskazał mi właściwy kierunek, to nie jest pełna odpowiedź. Mój plik js-translation.json jest nadal pusty po wygenerowaniu.

Na przykład lubię tłumaczyć przycisk Dodaj do koszyka. Ten przycisk ma trzy stany: Dodaj do koszyka, Dodawanie ... i Dodano ... Jak mogę przetłumaczyć te słowa? Kolejny przykład: „Nie masz produktów w koszyku”. tekst w minikartce. Myślę, że wszystkie te frazy powinny być przetłumaczone z js-translation.json, ale gdzie je dodać, aby plik był wypełniony tymi tłumaczeniami?

Borowy
źródło
Nie jestem tego w 100% pewien, ale myślę, że odpowiedź udzielona przez mage2.pro jest prawidłowa. Jeśli masz na przykład to w jednym z plików js $.mage.__('Add To Cart'), zostanie on automatycznie pobrany przez setup:static-content:deploypolecenie. Jedynym haczykiem jest to, że musisz mieć w plikach ustawień regionalnych inne tłumaczenie tekstu. Teksty, które mają jako tłumaczenie ten sam tekst, nie są dodawane do pliku json, aby nie zwiększać rozmiaru bez powodu.
Marius

Odpowiedzi:

10

Nie jestem pewien, czy już to wymyśliłeś, ale myślałem, że i tak odpowiem ...

Sądzę, że pozostałe odpowiedzi zmierzają we właściwym kierunku.

Zakładając, że masz już zainstalowane tłumaczenia, jeśli nie:

bin/magento i18n:pack -m replace -d source_nl_NL.csv . nl_NL

Przede wszystkim wyczyść pamięć podręczną (jak sugerowali również inni):

rm -rf var/cache var/generation var/page_cache var/view_preprocessed

Po drugie, wyczyść folder pub / static:

rm -rf pub/static/*/

Następnie regenerujemy zawartość statyczną: (brakowało mi kodu języka w innych odpowiedziach).

bin/magento setup:static-content:deploy nl_NL - Upewnij się, że dodajesz kod języka

Teraz sprawdź, czy utworzono js-translation.json:

find pub/static/ -name "js-translation.json"

Najprawdopodobniej otrzymasz listę js-translation.jsonplików. Sprawdź te pliki i usuń je, jeśli są puste lub zawierają coś podobnego [].

Timon de Groot
źródło
1
Dzięki, Timon, to jest naprawdę droga! Rozmyślałem o tym wcześniej, ale jeszcze nie opublikowałem tutaj odpowiedzi. To świetny dodatek do pytania.
Silvan
@Silvan W mojej instalacji plik js-translation.json ma już przetłumaczone frazy w moim języku, ale wciąż nie są tłumaczone, czy powinienem dodać je ręcznie do tego pliku?
Luis Garcia
Nie poleciłbym tego, ponieważ plik tłumaczenia js zostanie zastąpiony przy następnym wdrażaniu plików statycznych. W takim przypadku należy dodawać frazy ręcznie za każdym razem, gdy przeprowadzasz wdrożenie. Czy te frazy są obecne w pakiecie językowym?
Silvan
1

Spróbuj dodać tłumaczenia do plików .csv, a następnie upewnij się, że wykonano kolejne kroki:

  1. Pamięć podręczna powinna zostać opróżniona (w zasadzie foldery var / cache i var / view_preprocorted powinny zostać wyczyszczone)
  2. Pliki statyczne powinny zostać ponownie wdrożone (usuń wszystkie foldery w pub / static i uruchom bin / magento setup: static-content: deploy)
Arkadii Chyzhov
źródło
0

Usuń całą pamięć podręczną i usuń zawartość folderu pub / static.

Przejdź do katalogu głównego i uruchom poniższe polecenie: -

konfiguracja php bin / magento: zawartość statyczna: wdrażanie

Mam nadzieję, że Twój problem zostanie rozwiązany.

Rakesh Verma
źródło
ArkadiyCh powiedział mi również, aby usunąć pamięć podręczną i ponownie wdrożyć pliki statyczne, niestety to nie rozwiązuje mojego problemu.
Silvan
0

Miałem ten sam problem, jak „Nie można tłumaczyć wyrażeń na $ .mage .__ ('XXX')”, gdy wyrażenie w phtml działało idealnie. Rozwiązanie było genialnie proste.

$ t (...) i $ .mage analizuje tylko pliki * .js

W związku z tym nie należy do słownika tłumaczeń js.

Tak więc podczas renderowania skryptu sekcji w plikach phtml powinieneś bezpośrednio wstawić już przetłumaczone frazy za pomocą opakowań __('Translated phrase').

Galina
źródło