Como traduzir mensagem de texto ou texto de JS no Magento 2?

12

Eu tenho duas exibições A mensagem de erro de validação js padrão em inglês e árabe precisa ser traduzida para o árabe. Como fazê-lo? E também tenho alguns textos personalizados sobre como fazê-lo.

Eu criei um i18n para o árabe que está funcionando bem se eu ecoar em arquivo PHTML ou PHP, da mesma maneira que como transformá-lo em js também no Magento 2

alguém me ajuda

Pradeep Kumar
fonte

Respostas:

28

Você pode traduzir a mensagem de erro js como esta

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 use mage/translate.jspara tradução

Keyur Shah
fonte
criado ar_KW.csv na minha pasta i18n módulo em que traduzida como "Digite aqui sua mensagem" em meu ji tentou não trabalhando, mas em phtml se eu echo meu texto traduzido i exibindo
Pradeep Kumar
Você limpou o cache e a implantação de conteúdo estático? @PradeepKumar
Keyur Shah
Apenas a resposta que eu estava procurando! +1
thdoan 1/08/16
Esteja ciente de que isso não funcionará se você o usar diretamente em arquivos phtml. O Magento apenas analisará e converterá os arquivos js e html.
eInyzant
Isso funcionará, mas não é o que limpa um código; você está precisando de mago / translate, mas não o está usando. .
Oliver de Cramer
9

Nota adicional: se você precisar incluir alguma variável na tradução (em js), poderá usar isto :

$.mage.__('Hello %1').replace('%1', yourVariable);
Roman Snitko
fonte
7

Isso funcionou para mim:

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

        $tr('<your text>'),
    }
);
Sarfaraz bheda
fonte
Referência: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
Sarfaraz bheda
1
Tudo bem, mas o nome da variável mage/translatedeve ser $t, não o $tr magento.stackexchange.com/questions/293771/…
Siarhey Uchukhlebau
5

depois de cavar fundo, venho a conhecer o conceito de localização no magento2

abaixo são as coisas que você precisa seguir, no meu site temos duas view en e ar_kw Arabic

  1. Criar pacote de idioma http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. para obter todas as frases, você precisa executar o comando 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

    ele leu meu módulo de teste e criou um csv Sugarcode \ Test \ i18n \ ar_KW.csv

vai ficar tudo __('Some Text') and $.mage.__('Some Text')em js e preparar um csv

  1. agora traduza o arquivo recém-gerado para o árabe, que você pode manter em nome do código de localidade ar_KW.csv (pode estar dentro do seu módulo ou dentro do seu módulo de idioma)
  2. remova a pasta var e execute bin\magento setup:static-content:deploy en_US ar_KW

  3. ele criará todos os js junto com o arquivo js-translation.json em cada tema / ex luma / ar_KW, js-translation.json terá todos os dados traduzidos no lado js no formato json sempre que você vir a mensagem de erro que é mostrada neste arquivo só

Pradeep Kumar
fonte
Olá, fiz todas as etapas conforme sua resposta, o código que adicionei para ex: alert ($. Mage .__ ('js test')); está vindo corretamente no arquivo de idioma que está gerando, mas quando altero a tradução, a mensagem js ainda é a mesma. Estou esquecendo de algo ?
Sunil Verma
2

lançar erro se você usar __ então siga o código abaixo

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

Como tive o mesmo problema com as traduções js, criei um novo pacote de idiomas na app/i18n/...pasta e atualizei o cache.

Consulte o problema de tradução nos modelos JS .

g5wx
fonte
0

Adicione em um modelo .phtml sua mensagem de erro como:
<?php echo __('This is a required field.'); ?>
- tradução ativa online
- tradução

feito

Thibault LHOTELLIER
fonte
Você poderia adicionar mais alguns detalhes para a resposta sobre como e por que funciona?
tjons