Então, finalmente consegui descobrir o problema.
Parece que a tradução do modelo JS é lida a partir da js-translation.json
qual é gerada durante a setup:static-content:deploy
execuçã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.csv
precisamos 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.json
arquivo (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.xml
arquivo 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.php
conter 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.csv
você pode movê-lo paraapp/i18n/<project-name>/<xx_xx>/xx_XX.csv
Agora, a partir do project document root
precisamos executar estes comandos:
find pub/static -name js-translation.json -exec rm -rf {} \;
Precisamos excluir o js-translation.json
que 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.json
pasta 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.json
arquivos 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.json
antes de executar a implantação do conteúdo estático.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
configuração do servidor web arquivo e fazer essa entrega-lo sobre os tipos certos de pedidosComo descrevi na edição do Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ), há outra solução (mais fácil) para esse problema.
Você só precisa implantar todos os idiomas separadamente.
Então, ao invés de usar:
usar
Provavelmente, isso é causado pelo fato de o
static-content:deploy
único compilar os arquivos uma vez e depois copiá-los para outros idiomas.fonte