Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando se trata de aplicações multilíngues, especialmente com React e react-i18next, uma dificuldade recorrente é manter a tradução de textos que incluem elementos HTML dinâmicos, como links, de forma que seja fácil para tradutores ajustarem o conteúdo, sem perder a consistência técnica no código.
---
Em muitos cenários, precisamos inserir links ou outros elementos HTML em textos traduzidos. O desafio é fazer isso de modo que o conteúdo seja facilmente traduzível, sem precisar dividir o texto em várias chaves ou criar versões específicas para cada idioma, o que pode gerar confusão ou erros na tradução. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Por exemplo, imagine uma mensagem que, em português, fica assim: "Para mais informações, clique aqui." Com um link no meio, a tradução deve conter o elemento HTML adequado, porém, a inserção direta no arquivo de tradução pode comprometer a qualidade da tradução, especialmente em idiomas com estruturas gramaticais diferentes. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
---
Com a versão mais recente do react-i18next, a equipe introduziu o componente <Trans>, que possibilita uma interpolação mais natural de elementos React dentro de textos multilíngues.
Ele permite que o conteúdo seja definido na tradução usando marcadores de posição, que são substituídos por componentes React no momento da renderização. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Por exemplo, uma tradução poderia ser:
"Veja a <1>aqui</1> para mais detalhes."
E, na renderização, você usa o componente <Trans> assim:
<Trans i18nKey="informacao">Veja a <Link to="/detalhes">aqui</Link> para mais detalhes.</Trans>
O benefício é que o tradutor pode mover o link onde desejar na frase, ajustando a tradução sem mexer no código, enquanto o componente garante que a interpolação seja feita corretamente. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
---
Para facilitar a manutenção de textos multilíngues, recomendo seguir uma abordagem onde a tradução contém marcadores de posição numérica ou nomeada, e o componente React fornece os elementos correspondentes. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No arquivo de tradução:
{
"descricao": "Clique <1>aqui</1> para continuar."
} O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Na implementação:
<Trans i18nKey="descricao">
Veja <Link to="/mais">aqui</Link> para continuar.
</Trans> Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Ou, usando o recurso de componentes passados como props:
<Trans i18nKey="descricao" components={{ 1: <Link to="/mais" /> }}>Clique <1>aqui</1> para continuar.</Trans> Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Este método garante que a tradução possa ser adaptada para diferentes idiomas, respeitando as regras gramaticais locais. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
---
<Trans> ao invés de manipular HTML via dangerouslySetInnerHTML, pois isso mantém a segurança e a integridade do conteúdo.No seu projeto, essa abordagem melhora a manutenção e a qualidade das traduções, além de facilitar o trabalho de tradutores e equipes de conteúdo. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Seus textos multilíngues podem ganhar em flexibilidade e precisão com o uso adequado do <Trans>, alinhando a implementação técnica às necessidades de conteúdo. Como vocês costumam lidar com esses elementos em textos multilíngues? Alguma estratégia que funcione melhor no seu time? O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
No meu time, a gente prefere usar <Trans> mesmo, pq dá mais liberdade pros tradutores ajustarem. Mas é importante treinar bem os tradutores pra entenderem as marcações. Já deu problema com isso?
Acho que essa abordagem com
<Trans>realmente resolve o problema de forma elegante. Já tive problemas com interpolação manual e o<Trans>ajuda a evitar esses erros. Você já enfrentou alguma limitação com ela em projetos mais complexos?Sim, às vezes em textos muito longos fica difícil manter a clareza na tradução, principalmente com múltiplas posições.