Localisation
Les traductions Commerce vous permettent de personnaliser et de localiser votre boutique pour plusieurs régions et marchés en générant :
- Dictionnaires de traduction, qui sont un moyen pratique de personnaliser ou de traduire certains mots et expressions, tels que ceux d’un module ou d’un thème personnalisé.
- Packages de langues qui permettent de traduire tout ou partie des mots et expressions dans l’application Commerce.
Voir Présentation des traductions.
Génération d’un dictionnaire de traduction
Vous pouvez générer un dictionnaire de traduction pour personnaliser les chaînes existantes, traduire des mots et des expressions dans un module personnalisé, localiser un thème ou créer des packages de langue.
Pour commencer la traduction, utilisez une commande pour générer un fichier CSV de dictionnaire avec une liste de tous les mots et expressions existants.
Pour générer le dictionnaire et commencer la traduction :
-
Extrayez les mots et expressions traduisibles des composants activés à l’aide de la commande de collection de traduction . Le contenu est extrait dans un fichier CSV.
-
Traduisez les mots et expressions existants. Vous pouvez ajouter d’autres termes personnalisés selon vos besoins.
Vous disposez d’options pour utiliser le dictionnaire traduit :
-
Vous pouvez regrouper les dictionnaires de traduction dans un package de langue et fournir le package à l’administrateur du magasin Commerce.
-
Dans Admin, l’administrateur de magasin configure les traductions.
Options de commande :
bin/magento i18n:collect-phrases [-o|--output="<csv file path and name>"] [-m|--magento] <path to directory to translate>
Le tableau suivant explique les paramètres et valeurs :
<path to directory to translate>
L’outil commence à rechercher le chemin d’accès que vous avez saisi et recherche tous les fichiers et sous-répertoires qu’il contient.
N’utilisez pas ce paramètre si vous utilisez
-m --magento
.-m --magento
Voici un exemple :
« Aucun élément trouvé »,« Aucun élément trouvé »,module,Magento_Wishlist
-o --output="<path>"
Si vous omettez ce paramètre, la sortie est redirigée vers stdout.
-m|--magento
.Instructions de traduction
Appliquez les règles suivantes lors de la traduction de mots et d’expressions :
- Modifiez uniquement le contenu de la deuxième colonne. Traduisez les phrases de l’anglais (
US
) dans la langue souhaitée. - Lors de la création de dictionnaires pour les paramètres régionaux, utilisez les chaînes Commerce par défaut.
- Lors de la traduction, faites attention aux espaces réservés :
%1
,%2
Commerce utilise des espaces réservés pour insérer des valeurs contextuelles ; elles ne sont pas utilisées pour les traductions. Par exemple :
Product '%1' has been added to shopping cart.
Remplit avec une valeur :
Product 'Multimeter-2000' has been added to shopping cart.
L’expression obtenue doit contenir au moins un de chaque espace réservé. Supposons, par exemple, qu’il existe des espaces réservés de %1
à %3
dans l’expression d’origine. La traduction peut comporter autant d’espaces réservés que nécessaire dans n’importe quel ordre, mais il doit y avoir au moins une occurrence de %1
, %2
et %3
. La traduction ne peut pas contenir de valeurs d’espace réservé non présentes dans la valeur d’origine (par exemple, %4
, %5
, etc.).
Exemple de traduction d’une expression :
"Buy %1 for %2 (%3 incl. tax) each","Compre %1 por %2 (%3 incl. imposto) cada"
Créer un package de langue
Contrairement à un dictionnaire de traduction, vous pouvez traduire n’importe lequel ou l’ensemble des mots et des expressions de l’application Commerce à l’aide d’un package de langue. Vous pouvez traduire un composant particulier (un module ou un thème, par exemple) à l’aide d’un dictionnaire de traduction. En savoir plus sur les packages de langue.
Cette section explique comment créer un package de langue, qui écrit des fichiers CSV dans des modules et des thèmes. Pour créer un package de langue, vous devez effectuer les tâches décrites dans les sections suivantes :
- Collecter et traduire des mots et des phrases. (Le paramètre
--magento
est obligatoire.) - Exécutez la commande du package de langue.
- Créer des répertoires et des fichiers.
- (Facultatif) Configurez plusieurs packages pour une langue.
Exécutez la commande du package de langue
Utilisation des commandes :
bin/magento i18n:pack [-m|--mode={merge|replace}] [-d|--allow-duplicates] <source> <locale>
Le tableau suivant explique les paramètres et valeurs de la commande du package de langue :
<source>
Utilisez
bin/magento i18n:collect-phrases
pour créer le fichier CSV, puis créez le package de langue comme décrit dans la section Création de répertoires et de fichiers.<locale>
de_DE
, pt_PT
, pt_BR
.-m --mode
Valeurs : fusionner ou remplacer (par défaut).
-d --allow-duplicates
Créer des répertoires et des fichiers
Les packages de langue se trouvent dans un répertoire sous app/i18n/<VendorName>
dans le système de fichiers Commerce avec le contenu suivant :
- Fichiers de licence requis
composer.json
registration.php
qui [enregistre] le package de languelanguage.xml
le fichier de méta-informations
de_de
].Pour créer ces fichiers :
-
Créez un répertoire sous
app/i18n
.Par exemple, les packages de langue Commerce se trouvent dans
app/i18n/magento
-
Ajoutez les fichiers de licence requis.
-
Ajoutez des [
composer.json
] qui spécifient les dépendances de votre package de langue. -
Enregistrez le package de langue avec
registration.php
-
Ajoutez
language.xml
fichier de méta-informations comme décrit dans la section suivante.
Package de langue language.xml
Lors de la déclaration d’un package de langue dans le fichier de configuration language.xml
, vous devez spécifier la séquence d’héritage de langue de ce package.
L’héritage de langue vous permet de créer une traduction appelée enfant basée sur une traduction existante appelée parent. Les traductions enfants remplacent les traductions parents. Cependant, si le chargement ou l’affichage de la traduction enfant échoue ou si une expression ou un mot est manquant, Commerce utilise le paramètre régional parent. Exemples d’héritage de package de langue.
Pour déclarer un package, spécifiez les informations suivantes :
<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>en_GB</code>
<vendor>magento</vendor>
<package>en_gb</package>
<sort_order>100</sort_order>
<use vendor="oxford-university" package="en_us"/>
</language>
Où :
code
—Paramètres régionaux du package de langue (obligatoire)vendor
: nom du fournisseur du module (obligatoire)package
: nom du package de langue (obligatoire)sort_order
: priorité de chargement d'un package lorsqu'un magasin dispose de plusieurs packages de langueuse
—Parent language package locale à partir duquel hériter les dictionnaires
Si nécessaire, vous pouvez spécifier plusieurs packages parents. Les packages parents sont appliqués sur la base Première utilisation répertoriée.
Exemple d’héritage de langue
Supposons qu’un package de langue hérite de deux autres packages et que ces packages aient également des packages parents et « grands-parents ».
Si un package de langue hérite de deux packages, son language.xml
peut se présenter comme suit :
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>en_GB</code>
<vendor>magento</vendor>
<package>language_pack</package>
<sort_order>100</sort_order>
<use vendor="parent-package-one" package="language_package_one"/>
<use vendor= "parent-package-two" package="language_package_two"/>
</language>
Dans l'exemple précédent:
language_package_one
hérite deen_au_package
eten_au_package
deen_ie_package
language_package_two
hérite deen_ca_package
eten_ca_package
deen_us_package
Si l’application Commerce ne trouve pas de mot ou d’expression dans le package en_GB
, elle recherche dans d’autres packages dans l’ordre suivant :
parent-package-one/language_package_one
<vendorname>/en_au_package
<vendorname>/en_ie_package
parent-package-two/language_package_two
<vendorname>/en_ca_package
<vendorname>/en_us_package
La spécification de tous les héritages entre les packages de langue peut entraîner la création de chaînes d’héritage circulaires. Utilisez le test Magento\Test\Integrity\App\Language\CircularDependencyTest pour localiser et corriger ces chaînes.
Configuration de plusieurs packages pour une langue
Pour rendre votre boutique plus flexible, vous pouvez charger plusieurs packages de langue pour la même langue dans votre boutique. Ainsi, vous pouvez utiliser différents packages personnalisés pour différentes parties de votre magasin, car le système compile un seul package à partir de tous les packages disponibles pour une langue.
Pour activer un package supplémentaire pour une langue existante, donnez au nouveau package tout nom à l’exception d’un nom de code de langue existant (pour éviter toute confusion). Spécifiez les configurations d’un package dans le fichier de méta-informations language.xml
du package de langue, comme décrit dans la section suivante.
Exemples d’utilisation des commandes de traduction
Les sections suivantes fournissent des exemples complets d’utilisation des commandes décrites dans cette rubrique pour créer des dictionnaires et des packages de traduction :
Exemple : créez un dictionnaire de traduction pour un module ou un thème
Pour ajouter une traduction allemande à un module ou un thème que vous souhaitez distribuer à d'autres commerçants :
-
Collecter des expressions de votre module :
code language-bash bin/magento i18n:collect-phrases -o "/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n/xx_YY.csv" /var/www/html/magento2/app/code/ExampleCorp/SampleModule
note info INFO Le nom du fichier CSV doit correspondre exactement au paramètre régional, y compris la casse des caractères. -
Traduisez les mots et les expressions à l’aide de ces directives.
-
Si nécessaire, copiez
xx_YY.csv
dans/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n
ou dans le répertoire des thèmes du module (selon que le dictionnaire de traduction correspond à un module ou à un thème).
Exemple : créer un package de langue
Comme dans l’exemple précédent, générez un fichier CSV, mais au lieu de spécifier un répertoire de module ou de thème, spécifiez l’ensemble du répertoire racine de l’application Commerce. Le fichier CSV obtenu contient toutes les expressions que la commande peut trouver dans le code.
-
Collecter des expressions de votre module :
code language-bash bin/magento i18n:collect-phrases -o "/var/www/html/magento2/xx_YY.csv" -m
note info INFO Le nom du fichier CSV doit correspondre exactement au paramètre régional, y compris la casse des caractères. -
Traduisez les mots et les expressions à l’aide de ces directives.
-
Créez le package de langue.
code language-bash bin/magento i18n:pack /var/www/html/magento2/xx_YY.csv -d xx_YY
-
Créez un répertoire pour le package de langue.
Par exemple,
/var/www/html/magento2/app/i18n/ExampleCorp/xx_yy
-
Dans ce répertoire, ajoutez tous les éléments suivants :
- Une licence, si nécessaire
composer.json
(exemple de code suivant)registration.php
(exemple de code suivant)language.xml
(exemple de code suivant)
Exemple de
composer.json
:code language-json { "name": "examplecorp/language-xx_yy", "description": "Sample language", "version": "100.0.2", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { "magento/framework": "100.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] } }
Exemple de
registration.php
:code language-php <?php /** * Copyright [first year code created] Adobe * All Rights Reserved. */ use Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register( ComponentRegistrar::LANGUAGE, 'magento_xx_yy', __DIR__ );
Exemple de
language.xml
:code language-xml <?xml version="1.0"?> <!-- Copyright [first year code created] Adobe All Rights Reserved. --> <language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd"> <code>xx_YY</code> <vendor>examplecorp</vendor> <package>xx_yy</package> </language>