Как перевести сообщение об ошибке JS или текст в Magento 2?

13

У меня есть два представления: английский и арабский. По умолчанию сообщение об ошибке проверки js необходимо перевести на арабский, так как это сделать? А также у меня есть несколько пользовательских текстов о том, как это сделать.

Я создал i18n для арабского, работает нормально, если я делаю эхо в файле PHTML или PHP, таким же образом, как передать его в js также в Magento 2

кто-нибудь поможет мне

Прадип Кумар
источник

Ответы:

29

Вы можете перевести сообщение об ошибке JS, как это

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'));
    });
});

Magento2 использовать mage/translate.jsдля перевода

Кейур Шах
источник
создал ar_KW.csv в моем модуле, в папке i18n, которая переведена как «Введите здесь ваше сообщение» в моем ji, попробовал, чтобы это не работало, но в phtml, если я отображаю переведенный текст, который я отображаю
Pradeep Kumar
Вы очистили свой кэш и развернули статический контент? @PradeepKumar
Кейур Шах
Просто ответ, который я искал! +1
thdoan
Имейте в виду, что это не будет работать, если вы используете его непосредственно в файлах phtml. Magento будет только анализировать и переводить из js и html файлов.
eInyzant
Это будет работать, но это не то, что чистый код; Вы требуете мага / перевода, но не используете его. ,
Оливер де Крамер
10

Дополнительное примечание: если вам нужно включить некоторую переменную для перевода (в js), вы можете использовать это :

$.mage.__('Hello %1').replace('%1', yourVariable);
Роман Снитко
источник
7

Это сработало для меня:

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

        $tr('<your text>'),
    }
);
Сарфараз бхеда
источник
Ссылка: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
бхеда
1
Хорошо, но имя переменной mage/translateдолжно быть $t, а не $tr magento.stackexchange.com/questions/293771/…
Сергей Учухлебау
5

после глубокого копания я узнал концепцию локализации в magento2

Ниже приведены вещи, которым вы должны следовать, на моем сайте у нас есть два вида en и ar_kw арабский

  1. Создать языковой пакет http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. чтобы получить все фразы, вам нужно запустить команду 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

    он плохо прочитал мой тестовый модуль и создал CSV Sugarcode \ Test \ i18n \ ar_KW.csv

все получится __('Some Text') and $.mage.__('Some Text')в JS и подготовить CSV

  1. Теперь переведите созданный файл на арабский язык, который вы можете сохранить в названии кода локали ar_KW.csv (он может быть внутри вашего модуля или внутри вашего языкового модуля)
  2. удалить папку var и запустить bin\magento setup:static-content:deploy en_US ar_KW

  3. он создаст все js вместе с файлом js-translation.json в каждой теме / ex luma / ar_KW, js-translation.json будет иметь все переведенные на js данные в формате json, когда вы увидите сообщение об ошибке, которое будет показано в этом файле только

Прадип Кумар
источник
Здравствуйте, я сделал все шаги в соответствии с вашим ответом, код, который я добавил для ex: alert ($. Mage .__ ('js test')); правильно приходит в генерации языкового файла, но когда я изменяю перевод, сообщение js остается тем же. Я что-то пропустил ?
Сунил Верма
2

выдает ошибку, если вы используете __, поэтому следуйте приведенному ниже коду

  require([
    'jquery', // jquery Library
    'mage/translate'
   ], function($,$t){ 
        $(window).load(function() {
            alert($t('Enter Your message here'));
        });
    });
Прадип Кумар
источник
0

Добавьте в шаблон .phtml ваше сообщение об ошибке, например:
<?php echo __('This is a required field.'); ?>
- активный перевод онлайн
- перевод

сделанный

Тибо ЛОТЕЛЬЕ
источник
Не могли бы вы добавить более подробную информацию для ответа о том, как и почему это работает?
17