Comment traduire un message d'erreur ou un texte JS dans Magento 2?


13

J'ai deux vues Le message d'erreur de validation js par défaut anglais et arabe doit être traduit en arabe, alors comment faire? Et j'ai aussi quelques textes personnalisés sur la façon de le faire.

J'ai créé un i18n pour l'arabe fonctionne bien si je fais l'écho dans un fichier PHTML ou PHP, de la même façon comment le briller en js également dans Magento 2

quelqu'un m'aide

Réponses:


29

Vous pouvez traduire le message d'erreur js comme ceci

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

Utilisation de Magento2 mage/translate.jspour la traduction


créé ar_KW.csv dans mon dossier module i18n dans celui traduit "Entrez votre message ici" dans mon ji essayé cela ne fonctionnait pas mais en phtml si je fais écho à mon texte traduit que j'affiche
Pradeep Kumar

Avez-vous vidé votre cache et déployé votre contenu statique? @PradeepKumar
Keyur Shah

Juste la réponse que je cherchais! +1
thdoan

Sachez que cela ne fonctionnera pas si vous l'utilisez directement dans des fichiers phtml. Magento analysera et traduira uniquement à partir des fichiers js et html.
eInyzant

Cela fonctionnera mais n'est pas le propre d'un code; vous avez besoin de mage / traduire mais ne l'utilisez pas. .
oliver de Cramer

10

Remarque supplémentaire: si vous devez inclure une variable à traduire (en js), vous pouvez utiliser ceci :

$.mage.__('Hello %1').replace('%1', yourVariable);


5

après avoir creusé profondément, je connais le concept de localisation dans magento2

ci-dessous est la chose que vous devez suivre, dans mon site Web, nous avons deux vues en et ar_kw arabe

  1. Créer un package de langue http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-i18n.html#config-cli-subcommands-xlate-example2

  2. pour obtenir toutes les phrases dont vous avez besoin pour exécuter la commande 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

    il a mal lu mon module de test et créé un Sugarcode csv \ Test \ i18n \ ar_KW.csv

il obtiendra tout __('Some Text') and $.mage.__('Some Text')en js et préparera un csv

  1. traduisez maintenant le fichier nouvellement généré en arabe que vous pouvez conserver au nom du code de paramètres régionaux ar_KW.csv (il peut être à l'intérieur de votre module ou à l'intérieur de votre module de langue)
  2. supprimer le dossier var et exécuter bin\magento setup:static-content:deploy en_US ar_KW

  3. il créera tous les js avec le fichier js-translation.json dans chaque thème / ex luma / ar_KW, js-translation.json aura toutes les données traduites du côté js au format json chaque fois que vous voyez le msg d'erreur qu'il ne montre pas à partir de ce fichier seulement


Bonjour, j'ai fait toutes les étapes selon votre réponse, le code que j'ai ajouté pour ex: alert ($. Mage .__ ('js test')); arrive correctement dans le fichier de langue, mais quand je change la traduction, le message js est toujours le même. Suis-je en train de manquer quelque chose?
Sunil Verma

2

cela génère une erreur si vous utilisez __ alors suivez le code ci-dessous

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


0

Ajoutez dans un modèle .phtml votre message d'erreur comme:
<?php echo __('This is a required field.'); ?>
- actif traduire en ligne
- traduire

terminé


Pourriez-vous ajouter quelques détails supplémentaires pour savoir comment et pourquoi cela fonctionne?
tjons
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.