Tradução no Magento – Um guia prático
Desenvolvimento, Magento 2
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
- Arquivos de tradução (dicionário)
- Detectando um texto para traduzir
- Preparando traduções no meu módulo
- Traduzindo módulo de terceiros / Tradução no tema
- Traduzindo e-mails transacionais
- Tradução inline (direto no browser)
- Tradução de produtos e categorias
- Considerações e dicas
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.
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).
Se preferir, use a linha de comando:
bin/magento config:set dev/translate_inline/active_admin 1
– para adminbin/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.
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/traducao-no-magento-guia-pratico/"]