¿Cómo traducir el mensaje de error JS o el texto en Magento 2?

13

Tengo dos vistas El mensaje de error de validación js predeterminado en inglés y árabe debe traducirse en árabe, ¿cómo hacerlo? Y también tengo algunos textos personalizados sobre cómo hacerlo.

Creé un i18n para árabe que funciona bien si hago eco en un archivo PHTML o PHP, de la misma manera que lo agrego a js también en Magento 2

alguien me ayude

Pradeep Kumar
fuente

Respuestas:

29

Puede traducir un mensaje de error js como este

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

Uso de Magento2 mage/translate.jspara la traducción

Keyur Shah
fuente
creado ar_KW.csv en mi carpeta i18n del módulo en ese traducido "Ingrese su mensaje aquí" en mi ji lo intenté no funciona pero en phtml si hago eco de mi texto traducido que estoy mostrando
Pradeep Kumar
¿Borraste tu caché y la implementación de contenido estático? @PradeepKumar
Keyur Shah
Justo la respuesta que estaba buscando! +1
thdoan
Tenga en cuenta que esto no funcionará si lo usa directamente en archivos phtml. Magento solo analizará y traducirá archivos js y html.
eInyzant
Esto funcionará pero no es tan limpio de un código; estás requiriendo mage / translate pero no lo estás usando. .
oliver de Cramer el
10

Nota adicional: si necesita incluir alguna variable a la traducción (en js), puede usar esto :

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

Esto funcionó para mí:

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

        $tr('<your text>'),
    }
);
Sarfaraz Bheda
fuente
Referencia: /vendor/magento/module-checkout/view/frontend/web/js/view/payment.js
Sarfaraz bheda
1
Muy bien, pero el nombre de la variable mage/translatedebe ser $t, no el $tr magento.stackexchange.com/questions/293771/…
Siarhey Uchukhlebau
5

Después de profundizar, llego a conocer el concepto de localización en magento2

a continuación son lo que debe seguir, en mi sitio web tenemos dos view en y ar_kw Arabic

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

  2. para obtener todas las frases necesitas ejecutar el 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

    leeré mi módulo de prueba y crearé un csv Sugarcode \ Test \ i18n \ ar_KW.csv

obtendrá todo __('Some Text') and $.mage.__('Some Text')en js y preparará un csv

  1. ahora traduzca el archivo recién generado al árabe, que puede guardar en nombre del código local ar_KW.csv (puede estar dentro de su módulo o dentro de su módulo de idioma)
  2. eliminar la carpeta var y ejecutar bin\magento setup:static-content:deploy en_US ar_KW

  3. creará todos los archivos js junto con js-translation.json en cada tema / ex luma / ar_KW, js-translation.json tendrá todos los datos traducidos del lado js en formato json cuando vea el mensaje de error que se muestra desde este archivo solamente

Pradeep Kumar
fuente
Hola, he realizado todos los pasos según su respuesta, el código que agregué para ex: alert ($. Mage .__ ('js test')); está viniendo correctamente en el archivo de idioma que genera pero cuando cambio la traducción el mensaje js sigue siendo el mismo. Me estoy perdiendo de algo ?
Sunil Verma
2

arroja un error si usa __ así que siga el código a continuación

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

Agregue una plantilla .phtml su mensaje de error como:
<?php echo __('This is a required field.'); ?>
- traducción activa en línea
- traducir

hecho

Thibault LHOTELLIER
fuente
¿Podría agregar algunos detalles más para la respuesta sobre cómo y por qué funciona?
tjons