Traduction de chaînes personnalisées en modèles de masquage de thème

8

Je sais que ce problème a été traité à plusieurs reprises dans ce forum

Localisation Magento2 Javascript

Magento 2 - problème de traduction dans les modèles JS

Magento2 traduisant le texte du modèle Javascript (KO)

J'ai installé le pack de langue italienne sur mon projet Magento 2.1.9 et la plupart des chaînes sont correctement traduites.

J'ai ajouté un nouveau dictionnaire de traduction dans mon thème.

vendor/<Vendor>/<Theme>/i18n/it_IT.csv

Ici, j'ai modifié certaines traductions et ajouté les nouvelles chaînes de mon thème à traduire. Pour les chaînes incluses dans les fichiers phtml, tout fonctionne bien.

J'ai ajouté quelques chaînes personnalisées dans les modèles de désactivation de la caisse. Par exemple dans

<My-theme>/Magento_Checkout/web/template/authentication.html 

J'ai ajouté

<span data-bind="i18n: 'Do you already have an account?'"></span>

Puis dans mon thème it_IT.csv:

"Do you already have an account?","Hai già un account?"

Bien sûr, j'ai vidé le cache, pub / static / , var / view_preprocessed / , var / generation, etc. et j'ai exécuté toutes les commandes.

Les cordes sont toujours en anglais.

Je dois vraiment créer un nouveau paquet de langue pour traduire quelques chaînes lors du paiement? Quelle est la raison?

EDIT Les traductions en ligne fonctionnent pour toutes les chaînes. Cela peut être un moyen de le réparer temporairement mais pas la solution définitive.

nuovecode
la source
1
j'ajouterais également que d'autres traductions fonctionnent en utilisant cette méthode
springerin

Réponses:

2

Vous devez étendre un package de langue, la création d'un fichier de traduction dans le thème ne suffit pas.

Ce module d'extension doit contenir:

composer.json

{
  "name": "snowdog/project-language-translations",
  "description": "Some translations for some project",
  "type": "magento2-language",
  "require": {
    "magento/framework": "^100.0.0"
  },
  "autoload": {
    "files": [
      "registration.php"
    ]
  }
}

language.xml

<?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_US</code>
    <vendor>snowdog</vendor>
    <package>en_us_custom</package>
</language>

registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    'snowdog_en_us_custom',
    __DIR__
);

Et bien sûr, fichier avec traductions dans la langue souhaitée.

igloczek
la source
0

Une solution alternative (celle que nous avons finalement adoptée) consiste à inclure des fichiers de traduction dans un module plutôt que dans le thème.

Curieusement, les modules csv peuvent facilement traduire les chaînes js.

Créez un nouveau module avec:

<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE,
    '<Vendor>_<Module>',
    __DIR__
);

composer.json

{
  "name": "vendor/module",
  "description": "Project custom translations",
  "require": {
    "php": "7.0.2|7.0.4|~7.0.6"
  },
  "type": "magento2-module",
  "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "<Vendor>\\<Module>\\": ""
    }
  }
}

etc / module.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="<Vendor>_<Module>" setup_version="1.0.0" />
</config>

et ici nous ajouterons tout notre fichier de langue:

i18n / it_IT

i18n / en_US

..

Nous avons choisi ce système car le projet sur lequel nous travaillons a plusieurs langues et nous ne voulions pas inclure trop de packages linguistiques.

Notez que cela ne fonctionnera que pour les nouvelles chaînes car Magento donne la priorité aux traductions des modules linguistiques. Mais c'est une autre histoire.

nuovecode
la source