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?


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


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)

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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.