• Magento 2.x DevDocs – Translate theme strings. This topic describes how to add theme strings so that the i18n tool can collect and add the strings to the dictionary.

    • Strings added in .phtml templates.
    • Strings added in email templates.
    • Strings added in UI component templates.
    • Strings added in UI components configuration files.
    • Strings added in .js files.

Problème: Des libellés comme celui du bouton « Add to Cart/Ajouter au panier » dans la fiche produit et celui du placeholder « Start Searching…/Rechercher… » du champ de recherche dans le bandeau du site ne sont pas traduits/localisés lors du passage du site en français (ou dans une autre langue que l’anglais) et restent affichés en anglais!

En ligne de commande (à envisager, d’autres solutions existent)

Source: magento 2 translate shipping method title

[Méthode globale pour corriger les erreurs de localisation] Les traductions pour certains libellés de base sont déclarées dans un fichier dictionary.csv

…mais restent pourtant affichées en anglais sur mes pages, alors même que la grande majorité des libellés sont traduits correctement.

De manière générale, un libellé déclaré dans le fichier vendor/imaginaerum/magento2-language-fr-fr/dictionary.csv, comme par exemple:

…peut être exploité dans un fichier PHTML en l’invoquant de la manière suivante:

Si vous avez repéré le fichier PHTML incriminé (celui qui ne traduit pas votre libellé), vous pouvez remplacer l’appel de traduction de la manière suivante: <?= $block->escapeHtml(__('Un libellé tel que déclaré dans le fichier: vendor/imaginaerum/magento2-language-fr-fr/dictionary.csv')); ?>.

Traduction/Localisation du libellé du bouton « Add to Cart/Ajouter au panier » dans la fiche produit

Note: cet exemple est propre au thème Supro pour Magento 2.

Surcharger le template app/design/frontend/Mgs/supro/Magento_Catalog/templates/product/view/addtocart.phtml dans votre thème enfant (si vous n’en avez pas, il faudra en créer un… Dans notre exemple: app/design/frontend/Sodifrance/pdv/Magento_Catalog/templates/product/view/addtocart.phtml) et remplacer les lignes suivantes:

…par:

Traduction/Localisation du libellé du placeholder « Start Searching…/Rechercher… » du champ de recherche dans le bandeau du site

Note: cet exemple est propre au thème Supro pour Magento 2.

Surcharger le template app/design/frontend/Mgs/supro/Magento_Search/templates/form.mini.phtml dans votre thème enfant (si vous n’en avez pas, il faudra en créer un… Dans notre exemple: app/design/frontend/Sodifrance/pdv/Magento_Catalog/templates/product/view/addtocart.phtml) et remplacer les lignes suivantes:

(c’est en fait uniquement la ligne placeholder="<?php /* @escapeNotVerified */ echo __('Start Searching...'); ?>" qu’on remplace) …par:

Traduction dans un fichier JS

La méthode de traduction de chaînes de caractères incluses dans des fichiers JS dans Magento 2 est expliquée ici.

Note: notre exemple tient toujours compte du fait que nous utilisions le thème Supro, mais il reste appliquable dans d’autres cas. Nous allons surcharger le fichier app/code/MGS/AjaxCart/view/frontend/web/js/action/product-add-to-cart.js dans app/design/frontend/Vendor/theme/MGS_AjaxCart/web/js/action/product-add-to-cart.js.

(Si ce n’est pas fait) lier la librairie 'mage/translate' via requireJS

Utiliser la fonction $.mage.__('<chaîne de caractères>');

ATTENTION: les clés de traduction sont sensibles à la casse. Respectez les minuscules/majuscules! Exemple d’un cas que j’ai dû déboguer:

Note: il est également possible de déclarer un alias pour la fonction $.mage.__('<chaîne de caractères>');. Exemple:

Traduction dans un composant UI de Magento 2 (fichier *.html)

Dans notre exemple, nous allons surcharger le fichier natif vendor/magento/module-checkout/view/frontend/web/template/cart/shipping-rates.html dans app/design/frontend/MyVendor/myTheme/Magento_Checkout/web/template/cart/shipping-rates.html pour corriger un bug de Magento 2.3 sur le libellé Flat Rate qui n’est pas traduit dans la page panier. Nous remplacerons pour ce faire la ligne:

…par:

Note: la traduction française de l’expression Flat Rate existe déjà dans le fichier vendor/imaginaerum/magento2-language-fr-fr/dictionary.csv, donc nul besoin de la recréer.

La partie à ne pas oublier dans ce cas (surcharge de composant UI sous forme de fichier HTML), est d’exécuter les commandes suivantes: »

1. Pour faire en sorte que la surcharge du fichier HTML soit prise en compte:

…et si vous utilisez Grunt:

2. Pour faire en sorte que la traduction de votre libellé soit prise en compte (nous sommes dans un cas où le libellé est généré via JavaScript):

Traduction inline via l’interface d’admin de Magento 2

Pas testé. Source: How to use the inline translation?

Chemin en BO: Stores > Configuration > Advanced > Developer > Translate Inline > Enable for Storefront > Yes.

[Thème Supro uniquement] Surcharge de styles

C’est honteux mais, dans la source du thème Supro, certains textes se retrouvent dans les feuilles de style. Si votre site est multilingue, il faut créer un thème par langue pour corriger le problème de traduction.

Si vous suivez ce tuto: [Magento 2] Astuces d’utilisation du thème Supro: surcharger (override) les valeurs de style par défaut (ou celles définies depuis l’interface d’admin)… la surcharge LESS ci-dessous est à placer dans le fichier app/design/frontend/Vendor/theme/web/css/supro-override.less.