Então, finalmente consegui descobrir o problema.
Parece que a tradução do modelo JS é lida a partir da js-translation.jsonqual é gerada durante a setup:static-content:deployexecução. Para preencher os dados nesse arquivo, um novo pacote de idiomas deve ser criado para o projeto.
Então, em vez de adicionar o CSV no nível do tema, como app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvprecisamos adicioná-lo ao pacote de idiomas.
Para criar um novo pacote de idiomas primeiro project document root, precisaremos criar os seguintes diretórios:
mkdir -p app/i18n/<project-name>/<xx_xx>
Importante : USAR APENAS NOMES DIRECTÓRIOS NOMES Os nomes de pasta com camelcas não funcionarão
Em seguida, altere o diretório para as pastas recém-criadas:
cd app/i18n/<project-name>/<xx_xx>
Agora você pode criar um composer.jsonarquivo (opcional) com o seguinte conteúdo:
{
"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"
]
}
}
Em seguida, crie um language.xmlarquivo com o seguinte conteúdo:
<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>
Depois de registration.phpconter o seguinte conteúdo, é necessário:
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'<project-name>_<xx_xx>',
__DIR__
);
Agora podemos criar um CSV para nossa tradução. Se você já tem um dentro da pasta do tema, algo como app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvvocê pode movê-lo paraapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Agora, a partir do project document rootprecisamos executar estes comandos:
find pub/static -name js-translation.json -exec rm -rf {} \;
Precisamos excluir o js-translation.jsonque já foi criado antes de executar osetup:static-content:deploy
Agora, executamos a implantação de conteúdo estático:
php bin/magento setup:static-content:deploy <xx_XX>
Feito isso, limpamos o cache:
php bin/magento cache:clean
php bin/magento cache:flush
Podemos verificar se os arquivos de tradução para o modelo JS foram gerados localizando toda a js-translation.jsonpasta pub / static.
find pub/static -name js-translation.json
Isso fornecerá a lista de todos os arquivos de conversão gerados para modelos JS.
Referência:
- Magento DevDocs
- Problema relacionado ao Github
js-translation.jsonarquivos são criados corretamente a partir da implantação de conteúdo estático, mesmo que os arquivos .csv sejam inseridosapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv. O único cuidado é excluir tudojs-translation.jsonantes de executar a implantação do conteúdo estático.