Traduzindo Cadeias Customizadas em Modelos Nocaute de Tema

8

Sei que esse problema foi tratado várias vezes neste fórum

Localização Magento2 Javascript

Magento 2 - traduzindo problemas em modelos JS

Magento2 traduzindo texto do modelo Javascript (KO)

Instalei o pacote de idiomas italiano no meu projeto Magento 2.1.9 e a maioria das strings foi traduzida corretamente.

Eu adicionei um novo dicionário de tradução no meu tema.

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

Aqui eu modifiquei algumas traduções e adicionei as novas strings do meu tema para traduzir. Para as strings incluídas nos arquivos phtml, tudo funciona bem.

Eu adicionei algumas strings personalizadas em modelos desatualizados de checkout. Por exemplo, em

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

Eu adicionei

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

Então, no meu tema it_IT.csv:

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

É claro que esvaziei o cache, pub / static / , var / view_preprocessed / , var / generation, etc. e executei todos os comandos.

As strings ainda estão em inglês.

Eu realmente tenho que criar um novo pacote de idiomas para traduzir algumas strings no checkout? Qual o motivo?

EDIT As traduções online funcionam para todas as strings. Pode ser uma maneira de corrigi-lo temporariamente, mas não a solução definitiva.

nuovecode
fonte
11
Eu também gostaria de acrescentar que outras traduções funcionam usando este método
springerin

Respostas:

2

Você precisa estender um pacote de idiomas, não basta criar um arquivo de tradução no tema.

Este módulo de extensão precisa conter:

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__
);

E, claro, arquivo com traduções no idioma desejado.

igloczek
fonte
0

Uma solução alternativa (a que finalmente adotamos) é incluir arquivos de tradução em um módulo e não no tema.

Estranhamente, os módulos csv podem facilmente converter as strings js.

Crie um novo módulo com:

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

compositer.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>

e aqui vamos adicionar todo o nosso arquivo de idioma:

i18n / it_IT

i18n / pt_BR

..

Escolhemos esse sistema porque o projeto em que trabalhamos tem muitos idiomas e não queremos incluir muitos pacotes de idiomas.

Observe que ele funcionará apenas para novas strings, porque o Magento dá prioridade às traduções do pacote de idiomas. Mas essa é outra história.

nuovecode
fonte