J'ai donc finalement pu comprendre le problème.
Semble que la traduction du modèle JS est lue à partir de js-translation.jsonlaquelle est générée pendant l' setup:static-content:deployexécution. Afin de remplir les données de ce fichier, un nouveau module linguistique doit être créé pour le projet.
Donc, au lieu d'ajouter le CSV au niveau du thème, comme app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvnous devons l'ajouter dans le package de langue.
Pour créer un nouveau module linguistique à partir de, project document rootnous devons créer les répertoires suivants:
mkdir -p app/i18n/<project-name>/<xx_xx>
Important : UTILISER UNIQUEMENT LES NOMS DE RÉPERTOIRE en minuscules ne fonctionnera pas
Ensuite, changez de répertoire pour les dossiers nouvellement créés:
cd app/i18n/<project-name>/<xx_xx>
Vous pouvez maintenant créer un composer.jsonfichier (facultatif) avec le contenu suivant:
{
"name": "<project-name>/<xx_xx>",
"description": "<sample description>", //Ex:English (United States) language
"version": "<version-number>", //100.0.1
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/framework": "100.0.*"
},
"type": "magento2-language",
"autoload": {
"files": [
"registration.php"
]
}
}
Ensuite, créez un language.xmlfichier avec le contenu suivant:
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>xx_XX</code> <!-- example: <code>en_US</code> -->
<vendor><project-name></vendor>
<package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>
Après cela, registration.phple contenu suivant est nécessaire:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Nous pouvons maintenant créer un CSV de traduction. Si vous en avez déjà un dans le dossier du thème, quelque chose comme app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvvous pouvez simplement le déplacer versapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Maintenant, à partir du, project document rootnous devons exécuter ces commandes:
find pub/static -name js-translation.json -exec rm -rf {} \;
Nous devons supprimer celui js-translation.jsonqui a déjà été créé avant d'exécuter lesetup:static-content:deploy
Maintenant, nous exécutons le déploiement de contenu statique:
php bin/magento setup:static-content:deploy <xx_XX>
Une fois cela fait, nous effaçons le cache:
php bin/magento cache:clean
php bin/magento cache:flush
Nous pouvons vérifier si les fichiers de traduction pour le modèle JS ont été générés en trouvant tout l' js-translation.jsonintérieur du dossier pub / statique.
find pub/static -name js-translation.json
Cela fournira la liste de tous les fichiers de traduction générés pour les modèles JS.
Référence:
- Magento DevDocs
- Problème lié à Github
js-translation.jsonfichiers sont créés correctement à partir du contenu statique déployé même si des fichiers .csv sont insérés dansapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv. Le seul soin est de tout supprimerjs-translation.jsonavant d'exécuter le déploiement de contenu statique.