J'ai donc finalement pu comprendre le problème.
Semble que la traduction du modèle JS est lue à partir de js-translation.json
laquelle est générée pendant l' setup:static-content:deploy
exé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.csv
nous devons l'ajouter dans le package de langue.
Pour créer un nouveau module linguistique à partir de, project document root
nous 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.json
fichier (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.xml
fichier 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.php
le 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.csv
vous pouvez simplement le déplacer versapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Maintenant, à partir du, project document root
nous devons exécuter ces commandes:
find pub/static -name js-translation.json -exec rm -rf {} \;
Nous devons supprimer celui js-translation.json
qui 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.json
inté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.json
fichiers 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.json
avant d'exécuter le déploiement de contenu statique.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
fichier et de faire une configuration de serveur Web qui le délivre sur les bons types de demandesComme je l'ai décrit dans le problème Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ), il existe une autre solution (plus facile) à ce problème.
Vous devez juste vous assurer de déployer chaque langue séparément.
Donc au lieu d'utiliser:
utilisation
Cela est probablement dû au fait que le
static-content:deploy
seul compile les fichiers une fois et les copie ensuite dans d'autres langues.la source