Localização Magento2 Javascript

16

Uma pergunta semelhante já foi feita aqui: traduções de texto em javascript no Magento 2 , mas o Magento atualizou essa técnica de tradução na versão beta.

Como posso adicionar ou atualizar traduções usadas pelo Javascript?

Eu descobri que o Magento cria um arquivo chamado 'js-translation.json' na pasta estática. Se eu editar este arquivo diretamente, vejo que minhas traduções são atualizadas. Mas onde esse arquivo é criado, e como posso adicionar traduções para que o Magento o adicione automaticamente ao js-translation.json quando ele é gerado?

Atualizar

A resposta correta para esta pergunta ainda não foi dada, apesar de o Mage2.PRO me apontar a direção certa, não é a resposta completa. Meu js-translation.json ainda está vazio quando gerado.

Por exemplo, gosto de traduzir o botão Adicionar ao carrinho. Este botão possui três estados, Adicionar ao carrinho, Adicionando ... e Adicionado ... Como posso traduzir essas palavras? Outro exemplo, o 'Você não possui itens no carrinho de compras'. texto no minicart. Eu acho que todas essas frases devem ser traduzidas de js-translation.json, mas onde adicioná-las para que esse arquivo seja preenchido com essas traduções?

Silvan
fonte
Não tenho 100% de certeza disso, mas acho que a resposta fornecida pelo mage2.pro é a correta. Se você tiver, por exemplo, esse arquivo em um dos arquivos js, $.mage.__('Add To Cart')ele será automaticamente captado pelo setup:static-content:deploycomando O único problema é que você precisa ter nos arquivos de localidade uma tradução diferente para o texto. Os textos que têm como tradução o mesmo texto não são adicionados ao arquivo json para não aumentar o tamanho sem um motivo.
Marius

Respostas:

10

Não tenho certeza se você já descobriu, mas pensei em responder de qualquer maneira ..

Eu acho que as outras respostas estão indo na direção certa.

Supondo que você já tenha as traduções instaladas, se não, por favor:

bin/magento i18n:pack -m replace -d source_nl_NL.csv . nl_NL

Portanto, antes de tudo, limpe o cache (como outros sugeriram também):

rm -rf var/cache var/generation var/page_cache var/view_preprocessed

Em segundo lugar, limpe sua pasta pub / static:

rm -rf pub/static/*/

Em seguida, regeneramos o conteúdo estático: (perdi o código lang nas outras respostas ..)

bin/magento setup:static-content:deploy nl_NL - Certifique-se de adicionar o código lang

Agora verifique se havia algum js-translation.json criado:

find pub/static/ -name "js-translation.json"

Provavelmente, você receberá uma lista de js-translation.jsonarquivos. Verifique esses arquivos e exclua-os se estiverem vazios ou contiver algo parecido [].

Timon de Groot
fonte
1
Obrigado Timon, este é realmente o caminho a percorrer! Eu mesmo descobri isso há um tempo, mas ainda não postei a resposta aqui. Este é um ótimo complemento para a pergunta.
Silvan
@Silvan Na minha instalação, o arquivo js-translation.json já traduziu algumas frases no meu código do idioma, mas ainda existem frases que não estão sendo traduzidas, devo adicioná-las manualmente a este arquivo?
Luis Garcia
Eu não recomendaria isso, porque o arquivo js-translation será substituído na próxima vez que você implantar arquivos estáticos. Nesse caso, você deve adicionar as frases manualmente toda vez que implementou. Essas frases estão presentes no pacote de idiomas?
Silvan
1

Tente adicionar traduções aos arquivos .csv e verifique se as próximas etapas são executadas:

  1. O armazenamento em cache deve ser liberado (basicamente as pastas var / cache e var / view_preprocessed devem ser limpas)
  2. Arquivos estáticos devem ser reimplementados (exclua todas as pastas dentro de pub / static e execute bin / magento setup: static-content: deploy)
Arkadii Chyzhov
fonte
0

Remova todo o conteúdo de cache e delele pub / pasta estática.

Vá para o diretório raiz e execute o comando abaixo: -

configuração do bin php / magento: static-content: deploy

Espero que seu problema seja resolvido.

Rakesh Verma
fonte
ArkadiyCh também me disse para remover o cache e reimplementar arquivos estáticos, infelizmente isso não resolve o meu problema.
Silvan
0

Eu tive o mesmo problema como "Não é possível traduzir frases em $ .mage .__ ('XXX')" quando a frase em phtml funcionou perfeitamente. Portanto, a solução era engenhosamente simples.

$ t (...) e $ .mage analisam apenas arquivos * .js

Conseqüentemente, ele não se enquadra no dicionário js-translation.

Portanto, ao renderizar um script de seção em arquivos phtml, você deve inserir diretamente as frases já traduzidas com wrappers __('Translated phrase').

Galina
fonte