Localização Em Uma Frase - Preposições de Localização em Inglês | PDF | Artes Linguísticas e ...
Preposições de Localização em Inglês | PDF | Artes Linguísticas e ...

Por que a localização em uma frase é mais complicada do que parece

A maioria dos desenvolvedadores acha que localizar texto é só trocar strings em arquivos JSON ou XML. Quando você começa a trabalhar com interfaces reais, descobre que a localização em uma frase é um problema bem diferente. O texto não vive isolado. Ele tem gênero, número, ordem das palavras e variações morfológicas que simplesmente quebram se você tratar tudo como uma substituição ingênua de variável. Eu já perdi meio dia num projeto por não entender isso direito. A frase em português precisava concordar o substantivo com o adjetivo, e o sistema de tradução simplesmente inseria o valor numa posição fixa. O resultado eram sentenças como "Você tem 5 novos amigos chegada" em vez da forma correta. O cliente achava que era bug do software, não problema de localização.

Localização em uma frase: o que realmente acontece

Localização em uma frase significa adaptar cada parte de uma oração completa para que soe natural no idioma de destino, considerando regras gramaticais específicas daquele idioma. Não é substituir uma palavra por outra. É entender a estrutura sintática e garantir que flexões, ordens e escolhas vocabulares façam sentido. O padrão internacional que resolve a maior parte desses problemas é o ICU MessageFormat. Ele suporta seletores de gênero e número, plurais complexos e argumentos nomeados. Se você ainda está usando interpolação de string com concatenação, está fazendo da forma errada desde o início.

Aqui vai um exemplo prático. Em inglês você diria "You have {count} new friend(s)". Em português, isso se divide em pelo menos três formas diferentes dependendo do gênero do substantivo e da quantidade. Com o MessageFormat, você estrutura assim: {count, plural, zero{Você não tem amigos novos} one{Você tem {count} amigo novo} other{Você tem {count} amigos novos}}

Esse formatador lida com a seleção automática com base no valor do count. O código-fonte define todas as variantes e o runtime escolhe a correta. Nada de condições if/else espalhadas pela interface.

A pegadinha que todo mundo deixa passar

O problema mais comum é assumir que a localização em uma frase funciona da mesma forma em todos os idiomas. Funciona. Até você tentar com árabe ou japonês. O árabe inverte a ordem da frase. O japonês coloca o verbo no final. Se o seu texto base foi escrito pensando exclusivamente na estrutura sujeito-verbo-objeto, os seletores do ICU não vão salvar você. Eu enfrentei isso num projeto de e-commerce onde a frase "O produto {nome} custa {preço}" precisava funcionar em oito idiomas. Para o alemão, a estrutura era aceitável com pequenas adaptações. Para o turco, que é aglutinativo, precisei reescrever a frase inteira do zero, porque a ordem das partículas deriva do nome do produto de formas imprevisíveis.

👉 Clique no botão abaixo para saber mais sobre o assunto!

A solução que funcionou foi abandonar a estrutura fixa e usar templates de frase completos por idioma, em vez de tentar parametrizar uma única versão. Isso significa mais trabalho inicial, mas elimina a necessidade de hacks linguísticos que quebam em produção.

Como estruturar isso de verdade

O primeiro passo é mapear todas as frases que precisam de localização no seu sistema. Não confie no instinto. Liste cada string que o usuário pode ver, incluindo aquelas escondidas em mensagens de erro e tooltips. Depois, classifique cada uma por tipo de variação: gênero, número, contexto ou combinações disso. O segundo passo é decidir a ferramenta. O ICU MessageFormat é o padrão da indústria e funciona em Java, JavaScript, C++ e várias outras plataformas. Alternativas mais leves incluem a biblioteca formatjs para ecossistemas JavaScript ou o gettext para projetos C e Python. Cada uma tem limitações próprias que você precisa conhecer antes de escolher.

Para localização em uma frase que envolve nomes próprios, datas e moedas, você vai precisar de formatação adicional além do MessageFormat. Datas em português brasileiro usam dia/mês/ano com nomes de meses por extenso em alguns contextos. Moedas precisam de separadores decimais corretos e símbolos apropriados. Isso geralmente exige o uso combinado de Intl.DateTimeFormat e Intl.NumberFormat no navegador ou classes equivalentes em outras linguagens.

Quando a localização em uma frase simplesmente não funciona

Não existe solução universal. Frases muito curtas como "Confirmar" ou "Cancelar" são triviais. Frases com metáforas, trocadilhos ou referências culturais exigem tradução adaptativa, não localização técnica. O processo nesse caso depende de um tradutor humano, não de uma biblioteca. Outro cenário problemático é quando o comprimento do texto final explode. Alemão costuma aumentar em até 30% em relação ao inglês. Árabe pode exigir até 40% a mais de espaço vertical. Se o seu layout não foi projetado para expansão, a localização vai funcionar linguisticamente mas quebrar visualmente. Teste sempre com dados de volume alto, não apenas com traduções fiéis ao tamanho original.

Se o seu produto precisa suportar idiomas com direção direita para esquerda, o trabalho dobra. Você precisa verificar alinhamento, espaçamento, ícones e qualquer elemento visual que assuma implicitamente LTR. Muitas vezes a correção mais rápida envolve reavaliar o CSS completo, não apenas inverter propriedades. O que eu recomendo na prática é começar com os três idiomas mais importantes do seu mercado e tratar cada localização como um produto independente. Documente as escolhas feitas. Revisite periodicamente. A localização em uma frase nunca termina de verdade, mas com a estrutura certa você evita gastar três vezes mais do que o necessário para corrigir erros que poderiam ter sido previstos.