Jak przetłumaczyć komunikat o błędzie JS lub tekst w Magento 2?

13

Mam dwa widoki Domyślny komunikat o błędzie sprawdzania poprawności js po angielsku i arabsku musi zostać przetłumaczony na język arabski, więc jak to zrobić? Mam też kilka niestandardowych tekstów, jak to zrobić.

Stworzyłem i18n dla języka arabskiego, działa poprawnie, jeśli wykonuję echo w pliku PHTML lub PHP, w ten sam sposób, jak przenieść go do js również w Magento 2

ktoś mi pomoże

Pradeep Kumar
źródło

Odpowiedzi:

29

Możesz przetłumaczyć komunikat o błędzie js w ten sposób

require([
'jquery', // jquery Library
'jquery/ui', // Jquery UI Library
'mage/translate' // Magento text translate (Validation message translte as per language)
], function($){ 
    $(window).load(function() {
        alert($.mage.__('Enter Your message here'));
    });
});

Wykorzystanie Magento2 mage/translate.jsdo tłumaczenia

Keyur Shah
źródło
utworzyłem ar_KW.csv w moim module i18n folder w tym przetłumaczonym „Wpisz swoją wiadomość tutaj” w moim ji próbowałem go nie działać, ale w phtml, jeśli echo przetłumaczonego tekstu wyświetlam
Pradeep Kumar
Czy wyczyściłeś pamięć podręczną i wdrożyłeś zawartość statyczną? @PradeepKumar
Keyur Shah
Tylko odpowiedź, której szukałem! +1
thdoan
Pamiętaj, że to nie zadziała, jeśli użyjesz go bezpośrednio w plikach phtml. Magento będzie analizować i tłumaczyć tylko z plików js i html.
eInyzant
To zadziała, ale nie jest tak czyste od kodu; potrzebujesz maga / tłumacza, ale go nie używasz. .
oliver de Cramer
10

Uwaga dodatkowa: jeśli potrzebujesz dołączyć zmienną do tłumaczenia (w js), możesz użyć tego :

$.mage.__('Hello %1').replace('%1', yourVariable);
Roman Snitko
źródło
7

To działało dla mnie:

define(
    [
        'mage/translate'
    ],
    function (
        $tr
    ) {

        $tr('<your text>'),
    }
);
Sarfaraz bheda
źródło
Odniesienie: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
bheda
1
W porządku, ale nazwa zmiennej mage/translatemusi być $t, a nie $tr magento.stackexchange.com/questions/293771/…
Siarhey Uchukhlebau
5

po głębokim kopaniu poznałem pojęcie lokalizacji w magento2

poniżej są rzeczy, które musisz śledzić, na mojej stronie mamy dwa widoki en i ar_kw arabski

  1. Utwórz pakiet językowy http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. aby uzyskać wszystkie frazy, musisz uruchomić polecenie ex

    php D:\xampp\htdocs\magento2\bin\magento i18n:collect-phrases -o "D:\xampp\htdocs\magento2\app\code\Sugarcode\Test\i18n\ar_KW.csv" D:\xampp\htdocs\magento2\app\code\Sugarcode\Test

    źle przeczytał mój moduł testowy i utworzył plik CSV Sugarcode \ Test \ i18n \ ar_KW.csv

dostanie wszystko __('Some Text') and $.mage.__('Some Text')w js i przygotuje csv

  1. przetłumacz teraz wygenerowany plik na arabski, który możesz przechowywać w nazwie kodu regionu ar_KW.csv (może znajdować się w module lub wewnątrz modułu językowego)
  2. usuń folder var i uruchom bin\magento setup:static-content:deploy en_US ar_KW

  3. utworzy wszystkie pliki js wraz z plikiem js-translation.json w każdym temacie / ex luma / ar_KW, js-translation.json będzie miał przetłumaczone wszystkie strony js w formacie json, gdy tylko pojawi się błąd msg tylko

Pradeep Kumar
źródło
Witaj, wykonałem wszystkie kroki zgodnie z twoją odpowiedzią, kod dodałem dla ex: alert ($. Mage .__ ('js test')); pojawia się poprawnie w generowaniu pliku językowego, ale kiedy zmieniam tłumaczenie, komunikat js nadal pojawia się tak samo. Coś mi brakuje?
Sunil Verma
2

wyrzuca błąd, jeśli używasz __, więc postępuj zgodnie z poniższym kodem

  require([
    'jquery', // jquery Library
    'mage/translate'
   ], function($,$t){ 
        $(window).load(function() {
            alert($t('Enter Your message here'));
        });
    });
Pradeep Kumar
źródło
0

Miałem ten sam problem z tłumaczeniami js, więc utworzyłem nowy pakiet językowy w app/i18n/...folderze i odświeżyłem pamięć podręczną.

Zobacz problem z tłumaczeniem w szablonach JS .

g5wx
źródło
0

Dodaj w szablonie .phtml komunikat o błędzie, taki jak:
<?php echo __('This is a required field.'); ?>
- aktywne tłumaczenie online
- tłumaczenie

gotowy

Thibault LHOTELLIER
źródło
Czy możesz dodać więcej szczegółów odpowiedzi, jak i dlaczego to działa?
tjons