Traductions de texte javascript Magento 2
-
12-12-2019 - |
Question
[MODIFIER]
C'est dépassé.La traduction ne se fait plus comme décrit ci-dessous
[/MODIFIER]
Dans Magento 1, les textes traduisibles nécessaires en javascript ont été ajoutés dans le jstranslate.xml
fichier dans le etc
dossier d'un module et ils ont été automatiquement ajoutés à l'objet traducteur js.
Comment puis-je ajouter des textes traduisibles à utiliser en javascript dans Magento 2 ?
J'ai trouvé comment utiliser les traductions de texte dans Magento 2 mais je ne sais pas comment en ajouter de nouvelles.
Voici un exemple sur la façon de les utiliser :
alert($.mage.__('Text to translate here'));
La solution
D'ACCORD.J'ai trouvé une solution mais elle me semble moche.
Dans le handle de mise en page de la page dont j'ai besoin, j'ajoute ceci :
<referenceContainer name="after.body.start">
<block class="Magento\Framework\View\Element\Template" name="some-name-here" template="[Namespace]_[Module]::translate.phtml"/>
</referenceContainer>
puis créez le modèle translate.phtml
dans [Namespace]/[Module]/view/[frontend|adminhtml]/templates
avec ce contenu :
<?php
$_data = array(
'Text one to translate' => __('Text one to translate'),
'Text two to translate' => __('Text two to translate'),
);
?>
<script type="text/javascript">
require(["jquery","mage/translate"], function($){
$.mage.translate.add(<?php echo Zend_Json::encode($_data) ?>)
});
</script>
J'espère vraiment qu'il existe une autre façon de procéder.
Autres conseils
Le src par défaut pour les traductions dans le frontend semble être/app/code/Magento/Translation/view/base/templates/translate.phtml
pointant vers ce bloc /app/code/Magento/Translation/Block/Js.php
qui a ceci comme fournisseur de données /app/code/Magento/Translation/Model/Js/DataProvider.php
Vous pouvez donc modifier la dépendance en un propre fournisseur de données, ou intercepter celui-ci pour ajouter vos propres traductions, ou ajouter un propre bloc de ce type avec votre propre fournisseur de données.