Cursos Magento

Tradução no Magento – Um guia prático

,

Publicado em 12 de dezembro de 2021

O Magento possui um mecanismo de tradução completo para todas as finalidades. Ao longo deste artigo vamos ver como funcionam alguns deles e como traduzir nossa loja Magento.

Disponibilizamos um pacote tradução para Magento 2 neste outro artigo.

Neste teremos mais detalhes sobre como realizar traduções no Magento em diferentes cenários, e como preparar um módulo para tradução.

Aqui veremos:

Configurando o idioma de uma loja Magento

Antes de realizar qualquer tipo de tradução, é importante definirmos o idioma da nossa loja. Isso pode ser feito no nível de visão de loja ou de forma global.

Isto é feito em Lojas -> Configuração -> Geral -> Localidade.

Se sua área administrativa estiver em Inglês, encontrará em Stores -> Configuration -> General -> Locale.

Opções de idioma no Magento 2

Lembre-se de limpar os caches de configuração e full page após realizar esta alteração.

PS: Esta e outras configurações são abordadas no curso de administração de lojas Magento aqui do Magenteiro.

Arquivos de tradução (dicionário)

A forma mais comum de se realizar traduções no Magento é com arquivos CSV. Estes arquivos podem estar presentes em pacotes de tradução, módulos e/ou temas. O magento sempre buscará pelo arquivo de tradução no diretório i18n nestes componentes. Ex: <componente>/i18n/pt_BR.csv.

Veja um exemplo de um trecho do arquivo de tradução do pacote pt_BR:

"%1 product(s) have been added to shopping cart: %2.","%1 produtos foram adicionados ao carrinho de compras: %2."
"Please reenter your search options.","Por favor, digite novamente suas opções de busca."
"We could not perform the search.","Não foi possível realizar a pesquisa."
"Owner Name","Nome do proprietário"
"Owner Email","E-mail do Proprietário"
"%1's Wish List","Lista de Desejos de %1"
"%1's Wish List (%2)","Lista de Desejos de %1 (%2)"
"Sign in to edit wish lists.","Inicie sessão para editar listas de desejos."

Do lado esquerdo encontramos o texto como foi digitado no código fonte(geralmente em Inglês), e do lado direito o texto traduzido.

Você pode gerar arquivos de tradução à partir do seu código-fonte, ou criar pacotes de tradução com alguns comandos, conforme mostrado na documentação oficial. No entanto, aqui mostraremos como fazer estas traduções com um pacote de tradução ou módulos existentes.

Detectando um texto para traduzir

Existem mais de uma forma de se traduzir um termo ou frase no Magento. Mas antes de escolher uma (e falaremos delas), é importante buscarmos onde está o termo que queremos traduzir.

Para fazer isso, a forma mais simples é realizando uma busca de parte do termo em toda base do Magento.

Isso pode ser feito através da sua IDE ou do próprio terminal com o comando grep, como mostrado abaixo.

grep -iR "added to shopping cart" /pasta/do/magento

Isso lhe trará o nome do arquivo e linha onde o termo completo pode ser encontrado. Com este termo em mãos, podemos adicioná-lo ao nosso arquivo de tradução (dicionário).

Preparando traduções no meu módulo

Arquivos de tradução de módulos ficam localizados na <pasta_do_modulo>/i18n. Se você está criando um módulo e pretende traduzi-lo, considere criar esta pasta com ao menos um arquivo de tradução.

Exemplo: bin/magento i18n:collect-phrases -o app/code/Magenteiro/HandleDebugger/i18n/pt_BR.csv app/code/Magenteiro/HandleDebugger

O comando acima percorrerá os arquivos do módulo em busca de textos que passaram pelos métodos de tradução, e em seguida criará um arquivo com eles.

No exemplo acima fizemos a chamada de <?php echo __('Test Text') ?> em um arquivo de template. E isso gerou o arquivo de tradução com uma linha para ser traduzido:

"Test Text","Test Text"

Traduzindo módulo de terceiros / Tradução no tema

Não é recomendado que altere nenhum módulo de terceiros diretamente. Especialmente módulos do próprio Magento ou módulos localizados na pasta /vendor.

Nestes casos, podemos adicionar os termos dentro do arquivo do nosso pacote de tradução ou no nosso tema.

Isso mesmo. Nosso tema ou as customizações que fizermos em um tema existente podem trazer traduções de termos presentes em outros módulos.

O caminho padrão de tradução de um tema é <pasta_do_tema>/i18n.

Traduzindo e-mails transacionais

Nós já vimos aqui no Magenteiro como alterar e customizar peças de e-mail transacionais. No entanto, os termos presentes nestes e-mails nem sempre estão disponíveis nos dicionários.

Você também não conseguirá encontrar estes termos usando o comando grep mostrado acima caso o template de e-mail já tenha sido modificado. Nestes casos a modificação é salva no banco de dados e a busca não terá sucesso.

No entanto, podemos modificar os termos do nosso e-mail transacional de forma a utilizar o conteúdo de dicionários. Fazemos isso com a diretiva {{trans}}. Veja dois exemplos:

{{trans "Some simple text to be translated"}}
{{trans "Thanks for your order number %orderNumber" orderNumber="incrementId"}}

Se você está criando um novo arquivo de email transacional, pode usar esta diretiva desde o começo. Caso esteja modificando um termo sem tradução, poderá adicioná-la conforme necessário, seguindo instruções do artigo acima.

Tradução inline (direto no browser)

A tradução inline permite que alteremos textos diretamente no browser, sem a necessidade de editar arquivo algum. Além disso, ela pode ser ativada para traduzir termos tanto no frontend quanto no admin da loja.

Particularmente não gosto desta abordagem, pois as traduções são salvas diretamente no banco de dados. Isto torna a manutenção dos termos mais difícil, uma vez que este tipo de tradução só está disponível no modo desenvolvedor. Além disso, perdemos o controle de versão e histórico – algo que geralmente temos ao trabalhar com arquivos.

Para ativar a tradução inline, também é necessário desativar os caches de bloco, full page, e tradução. Isso pode ser feito com o comando bin/magento cache:disable block_html full_page translate ou no admin da loja.

Em seguida, habilite a tradução inline em Avançado > Desenvolvedor > Tradução em linha. Lá, escolha onde deseja habilitar tal recurso (frontend ou admin).

Opções de tradução inline

Se preferir, use a linha de comando:

  • bin/magento config:set dev/translate_inline/active_admin 1 – para admin
  • bin/magento config:set dev/translate_inline/active 1 – para frontend

Ao habilitar tal recurso, todos os textos passíveis de tradução aparecerão com uma demarcação ao seu redor. Ao clicar no ícone de dicionário, um diálogo lhe permitirá realizar a tradução como desejar.

As traduções realizadas com este recurso serão salvas na tabela translation do Magento. Elas serão aplicadas ao idioma (locale) em uso no momento da edição.

Tradução de produtos e categorias

Se sua loja possui múltiplas visões de lojas usando diferentes idiomas, um mesmo produto terá diferentes atributos em cada visão. A maioria dos atributos exibidos na loja podem ser modificados para cada nível de visão.

No canto superior esquerdo da tela de edição de produtos ou categoria, você poderá encontrar o seletor de “Visão de loja”. Selecione a visão que deseja alterar, e mude os campos à gosto de acordo com o idioma de cada visão.

Desta forma é possível ter descrição de produtos, nome, e praticamente qualquer atributo com valores diferentes para cada idioma.

Atributos de produtos

O nome dos atributos (ex: color, description, title, etc) no entanto, são traduzidos em outra interface. Em Lojas > Atributos > Produto, ao clicar em cada atributo você poderá gerenciar como o rótulo (label) dele é exibido em cada visão de loja.

Alterando nome do atributo de produto

No exemplo acima, nossa loja tem apenas uma visão. No caso de múltiplas visões, outros campos seriam exibidos.

Considerações e dicas

Ao iniciar o trabalho de tradução é altamente recomendado que desabilite os caches de tradução e full_page. Além disso, todo trabalho de internacionalização de uma loja deve ser feito em ambiente de desenvolvimento, com modo developer ativado.

É muito comum que ao fazer deploy de suas traduções, elas não sejam vistas imediatamente.

Isso pode ocorrer por fatores de cache diversos. Os mais comuns são os próprios caches do Magento, utilização de CDN’s, e pela não compilação dos arquivos estáticos (bin/magento setup:static-content:deploy).

Outro ponto comum de atenção é com relação à digitação. Para os fins de tradução, o texto ao lado esquerdo do nosso arquivo de dicionário deve ser idêntico ao texto do código fonte.

Desta forma, “Text Text”, será diferente de “Test text”. Qualquer espaço, ou diferença de caixa fará diferença.

Leitura adicional

A documentação oficial do Magento traz boa parte do que falamos aqui. Outras dicas sobre como configurar a parte de tradução e outras partes do Magento podem ser encontradas em nossos cursos.

Alunos de cursos (pagos) de Magento 2 do Magenteiro têm acesso à um grupo exclusivo de apoio. Se você faz parte deste grupo, veja vários tópicos já publicados sobre tradução por lá.


Este artigo foi uma sugestão de Rodolfo Zappa. Você também pode indicar um artigo entrando em contato ou deixando um comentário.

Se gostou, não deixe de compartilhar.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/traducao-no-magento-guia-pratico/"]