5 pontos por GN⁺ 2025-05-20 | 1 comentários | Compartilhar no WhatsApp
  • Quando um serviço web define o idioma exibido com base na geolocalização por IP, usuários com VPN, viajando, morando no exterior ou em países multilíngues podem ver um idioma indesejado
  • País e idioma não têm uma relação 1:1: a Bélgica usa 3 idiomas oficiais, a Suíça usa 4, a Índia usa 22, e o Canadá é oficialmente bilíngue
  • O navegador envia o cabeçalho Accept-Language com base nas configurações do sistema operacional ou do navegador; um exemplo é Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Uma implementação melhor é priorizar Accept-Language e lembrar o idioma alterado manualmente pelo usuário em cookies ou parâmetros de URL
  • É melhor usar GeoIP em áreas que exigem localização, como moeda, entrega e requisitos legais, e não na seleção de idioma, para distorcer menos as preferências do usuário

A geolocalização por IP não informa a preferência de idioma

  • Um endereço IP mostra apenas de onde a solicitação veio; ele não informa qual idioma o usuário quer ou entende
  • Em casos de VPN, viagens, residência no exterior ou países com vários idiomas oficiais, a escolha de idioma baseada em IP erra facilmente
  • Países e idiomas não se correspondem de forma simples
    • Bélgica: 3 idiomas oficiais
    • Suíça: 4 idiomas oficiais
    • Índia: 22 idiomas oficiais
    • Canadá: oficialmente bilíngue e, informalmente, um ambiente multilíngue
  • Usuários de VPN podem ver idiomas aleatórios sempre que o IP muda, e há casos em que, ao acessar o Google, aparece um idioma que eles não entendem
  • Quando um banco de dados de IP incorreto é priorizado em relação às informações de idioma do navegador, o usuário recebe um idioma de UI indesejado

O Accept-Language do navegador deve ter prioridade

  • Todos os navegadores enviam o cabeçalho Accept-Language com os idiomas preferidos do usuário
  • Esse valor se baseia nas configurações do sistema operacional ou do navegador, não na localização nem no IP
  • Exemplo:
    • Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Um fluxo de tratamento razoável é simples
    • Ler o Accept-Language
    • Respeitar esse valor
    • Permitir que o usuário altere o idioma se precisar
    • Lembrar a escolha alterada em um cookie ou parâmetro de URL
  • Mesmo quando GeoIP for necessário, o adequado é limitá-lo a áreas como moeda, entrega e requisitos legais, não ao idioma

1 comentários

 
GN⁺ 2025-05-20
Comentários do Hacker News
  • É realmente irritante não aceitar o Accept-Language
    Pior ainda é que muitos sites multilíngues traduzem até o botão de troca de idioma e a lista de idiomas para o idioma atual, um design idiota que destrói o próprio propósito
    A Wikipedia faz isso direito. O botão de troca de idioma é claro, com um ícone multilíngue universal, e a lista de idiomas mostra o nome de cada idioma no próprio idioma, geralmente em ordem alfabética, colocando no topo os candidatos mais prováveis
    Por exemplo, uma página da Wikipedia em inglês mostra idiomas recomendados como Deutsch, Français, Nederlands. Se você presume o idioma arbitrariamente, todo mundo acaba se cansando; basta fazer como a Wikipedia

    • Também dá raiva quando você entra pela página que queria a partir de um mecanismo de busca, aparece um modal de seleção de país e, assim que escolhe o país, ele te manda para a página inicial do site daquela região
      Alguns têm botão de fechar, mas muitos não têm, o que irrita ainda mais
    • Chamar de “ordem alfabética” é meio delicado. Olhando hoje a lista de idiomas do artigo em destaque em inglês, 中文 e Italiano aparecem como recomendações, e o restante estava agrupado por região geográfica, sem ser exatamente em ordem alfabética
      Na parte da Europa parece haver um grupo em alfabeto cirílico, mas Қазақша aparece depois de Українська, o que não é correto nem pelo critério do cazaque e pode ser inesperado para quem não conhece Қ. As variantes do chinês também não parecem estar ordenadas por número de traços, e o coreano fica abaixo delas
      A localização da Wikipedia é excelente, mas isso é só um pequeno complemento sobre como “ordenar alfabeticamente” fica ambíguo quando os nomes dos idiomas são exibidos no próprio idioma
    • A Wikipedia também lembra a última escolha e a coloca no topo. Isso sim é experiência do usuário. Algo que realmente ajuda e não irrita
    • Como exemplo perfeito do que não fazer, o app do YouTube no iPhone certa vez mudou de repente para amárico
      O documento de suporte do Google https://support.google.com/youtube/answer/87604 explicava em inglês quais botões apertar, mas eu não sabia amárico e, na época, nem sabia que idioma era aquele. A tradução do iPhone também não reconhecia esse idioma etíope
      Foi uma situação constrangedora que poderia ter sido facilmente evitada com um único ícone multilíngue universal
    • Esse problema tem dois níveis. Quando aparece outro idioma europeu, normalmente dá para procurar mais ou menos a palavra correspondente a “English” e trocar, então não é um desastre
      Mas, quando aparece um sistema de escrita desconhecido, como o bengali, vira um problema
      Por isso, talvez seja uma boa ideia incluir inglês e chinês em forma não localizada em todos os menus de seleção de idioma, como rota de fuga. Quase todos os usuários da web conseguiriam reconhecer o suficiente para tatear pelo menu e encontrar seu idioma de verdade
  • Odeio também a “funcionalidade” do YouTube que traduz automaticamente os títulos dos vídeos para o idioma configurado. Eu entendo inglês; não preciso dessas traduções automáticas, e elas são realmente incômodas

    • Isso é muito pior do que simplesmente “entender inglês”
      Se eu não sei o idioma, aquele vídeo provavelmente não é para mim. Vídeos voltados a um público internacional em geral estão em inglês ou, pelo menos, foram traduzidos pelo próprio criador
      Títulos são frases curtas, então falta contexto para a tradução. Já vi em português um título como Vamos assistir uma conexão com o passado; literalmente era “vamos ver uma conexão com o passado”, e precisei fazer a tradução reversa na cabeça para perceber que o título original era Let's play A Link to the Past
      Materiais online também são bons para praticar uma segunda língua, então eu gostaria que não subestimassem a minha capacidade. No mínimo, deixem-me ler o original; se eu precisar, posso usar o Google Translate ou um dicionário
      Reconheço que esse recurso amplia o acesso a conteúdo online, mas, se piora a experiência, pelo menos deveria ser possível desativá-lo
    • Sou alemão, mas deixo o computador configurado em inglês; às vezes o YouTube traduz automaticamente vídeos ou anúncios em alemão e me apresenta frases extremamente bizarras e uma voz de máquina artificial
      Algo como Lidl is worth it, ja!
    • O problema não é só com os títulos, mas também com as faixas de áudio
      Alguns YouTubers que assisto com frequência estão expandindo os idiomas com faixas de áudio traduzidas feitas por fãs, e às vezes o inglês é uma delas. Sempre que vejo esses vídeos, os trocadilhos ou sentidos ocultos do idioma original desaparecem na tradução, então preciso trocar manualmente para o idioma original toda vez
      Como o YouTube não gosta do Firefox e das extensões relacionadas ao YouTube, o vídeo começa antes de todos os controles carregarem; muitas vezes preciso até voltar o vídeo para trocar a faixa de idioma
      Em outra resposta linkaram uma extensão que ajuda, então pretendo testar, mas é irritante que nas configurações do YouTube não exista um simples toggle “sempre usar o idioma original”. Quando eu quiser áudio traduzido, posso ativar manualmente; como falo algumas línguas em certo nível, isso é raro no conteúdo que assisto
      Se a intenção fosse atrapalhar bloqueadores de anúncios ou empurrar anúncios, eu até entenderia, mas isso é só um recurso de “conveniência” mal implementado. Ainda assim, imagino que algum PM tenha sido elogiado por isso
    • Parece que o algoritmo do YouTube recompensa quem usa esse recurso e aumenta a “acessibilidade do conteúdo”
      Mas, se me mostram um título em norueguês traduzido por máquina e horrível no lugar de um título em inglês que eu consigo ler, pela minha experiência isso é um sinal de que o canal é um canal de baixa qualidade que corre atrás do algoritmo, então acabo clicando em “não recomendar este canal”
    • Agora os resultados do Reddit no Google e no Kagi também aparecem traduzidos, então acontece de eu achar que encontrei uma resposta relevante no meu idioma, quando na verdade é uma tradução automática de uma postagem em inglês
  • Não gosto desse tipo de design porque ele parte da suposição implícita de que “todo mundo entende apenas um idioma”
    Consigo ler seu idioma confortavelmente e, em geral, prefiro o original a uma localização ruim. Por isso, quando tentam adivinhar meu idioma preferido com base no IP, quase sempre erram
    Eu já informo quais idiomas consigo usar pelas configurações de idioma do navegador, então não há motivo para presumir que o usuário não é inteligente o suficiente para configurá-las corretamente
    A dublagem por IA ativada por padrão no YouTube é ainda pior. Em cerca de metade dos vídeos que assisto, preciso abrir o vídeo, clicar nas configurações, desativar a dublagem por IA, voltar para o início e começar de novo. Não demora muito, mas incomoda demais

    • A dublagem por IA do YouTube é realmente horrível. Levei 5 minutos para perceber que o áudio que eu estava ouvindo não era um anúncio estranho em outra aba, mas vinha do próprio vídeo
      Também odeio quando o título aparece traduzido. É muito estranho assistir a um vídeo falado em inglês e ver o título em outro idioma
    • Mesmo tendo configurado o espanhol no Google como um dos idiomas que conheço, ele ainda traduz tudo automaticamente para o inglês
      Não sou fluente em espanhol, mas uma das boas maneiras de ficar fluente é consumir conteúdo no idioma original, e o YouTube dificulta isso
  • O mais irritante é o Google. Ele sabe quem eu sou, sabe que estou viajando e sabe que minha preferência de idioma é inglês, mas em certas páginas ainda mostra o idioma com base na localização
    Já que permiti que o Google me rastreie, gostaria que usasse isso não só para anúncios, mas também para uma boa experiência do usuário

    • Usuários de catalão recebem espanhol à força mesmo quando o espanhol não está associado em lugar nenhum à conta Google, ao idioma do sistema ou ao idioma do navegador
      Mesmo morando nos EUA, o Google tenta me entregar resultados em espanhol até em buscas relacionadas ao catalão. Por exemplo, prefere a Wikipédia em espanhol. O comportamento do buscador oscilou ao longo dos anos, mas nunca foi bom
      É um grande problema para meus filhos, que não entendem espanhol, e também para regiões catalanófonas fora da Espanha, incluindo Andorra
      O Gemini facilmente marcava conteúdo em catalão como inseguro e impedia a continuação da conversa. Isso acontecia até com prompts como “resuma este artigo para mim”; talvez tenha melhorado recentemente
      O Google de antigamente era um exemplo de grande empresa responsável e sensível à diversidade do mundo. Ainda valorizo os esforços de várias equipes, mas parece claro que isso não é mais uma prioridade
    • O Google é estranhamente o pior nesse problema
      Recentemente, parece ter decidido que é errado traduzir automaticamente para o inglês avaliações do Maps escritas no idioma local. Ele traduz todos os outros idiomas para o inglês, mas presume que, por eu morar naquela região, eu também saiba o idioma local e não precise de inglês
      Os resultados de busca são a mesma coisa. Como fiquei lá por bastante tempo, ele acha que obviamente vou querer a Wikipédia no idioma local. Só pesquiso no idioma local porque preciso fazer isso para encontrar informações locais, mas ele interpreta isso como um sinal de preferência
      Isso também se aplica à tendência geral de “o software deve ser inteligente e adivinhar todas as preferências”. Como o Google fracassa de forma tão consistente nisso e ainda continua fazendo, é difícil explicar por qualquer coisa que não seja arrogância corporativa equivocada
    • Já discuti esse problema com um desenvolvedor do Google
      Ele disse que, por eficiência, há etapas na renderização do conteúdo e que, ao criar a estrutura da página principal, ainda não há informações do usuário. Mas isso não faz sentido, porque mesmo nessa etapa o cabeçalho Accept-Language deveria estar disponível imediatamente
    • A pior experiência foi chegar a um novo país e a Play Store não mostrar os apps locais. Isso aconteceu porque minha conta Google estava vinculada ao país anterior
      Mudar o país não foi fácil, e eu teria que abrir mão do país antigo e dos apps dele. Como costumo ir e voltar, acabei comprando um segundo celular e criando uma conta para o novo país
    • O Google sabe que moro no Reino Unido e falo inglês, mas, quando faço login na TV de um quarto de hotel na Espanha e assisto a vídeos do YouTube em inglês, ele me mostra anúncios em espanhol
      É engraçado, porque parece que ele continua fazendo isso já que pode cobrar do anunciante, mesmo sabendo muito bem que eu não entendo
  • Um princípio muito mais importante é não traduza conteúdo automaticamente para o idioma do usuário
    Basta mostrar o idioma em que os dados realmente existem. Se o usuário quiser, ele é inteligente o suficiente para clicar no botão “traduzir” do navegador, e é bem provável que a qualidade dessa tradução seja melhor
    Inglês não é minha língua materna nem minha segunda língua, mas entendo bem o suficiente para usá-lo no trabalho todos os dias. Não quero ter que vasculhar uma pilha de lixo traduzido automaticamente para encontrar o botão que mostra a versão original em inglês
    Curiosamente, esse problema aparece principalmente com o inglês. Sites em outros idiomas geralmente não fazem isso, e esse fato por si só já é um sinal suficiente de que visitantes estrangeiros detestam isso
    Se você pretende usar tradução automática em um site, deveria fazer uma retrotradução em todos os idiomas antes de publicar. Traduza, cole o resultado de volta e traduza novamente para o idioma original; assim você verá mais ou menos qual era o conteúdo que estava prestes a publicar. Melhor não fazer isso

    • Odeio que o Reddit traduza automaticamente para o francês. O estilo particular de cada usuário já seria difícil, ou até impossível, de traduzir bem por uma pessoa, e eles fazem tradução automática
      Mesmo que eu não soubesse inglês, acho que esse conteúdo traduzido não valeria a pena
      A função para trocar o idioma ou mostrar o original é difícil de encontrar e muda conforme você está no app, na web móvel ou na web desktop
      O esforço exagerado para me fazer baixar o app é outro problema à parte
    • A tradução automática ficou boa o suficiente nos últimos anos a ponto de até falantes nativos não perceberem
  • A suposição de que “todos os navegadores enviam o cabeçalho Accept-Language, informam o idioma preferido com base nas configurações do sistema operacional ou do navegador do usuário, e o usuário pode mudar isso se quiser” também está quebrada
    Para começar, Accept-Language é uma lista ordenada, mas pessoas que usam vários idiomas no dia a dia muitas vezes têm preferências por assunto, não uma ordem absoluta de preferência
    Mesmo que um site de notícias em inglês tenha uma versão traduzida para o francês, e mesmo que a pessoa seja mais fluente em francês, ela pode querer a versão em inglês
    Por isso, o usuário acaba especificando o idioma mais prático, não sua preferência real. Por exemplo, sites locais não ingleses tendem a aprontar menos do que sites internacionais em inglês; então, se você configurar o idioma apenas como inglês, os primeiros forçam a exibição em inglês e a maioria dos outros sites é pouco afetada
    Pelo contrário, nesses casos ajuda quando um site francês ignora todas as preferências e empurra por padrão a versão em francês
    No fim, o que eu queria é que operadores de sites parassem de tentar bancar os espertos e oferecessem uma interface muito clara e rápida para trocar para outra versão. A Wikipedia faz isso razoavelmente bem

    • A solução não é jogar fora o útil cabeçalho Accept-Language, mas sim não oferecer traduções feitas pela metade
      Se for um site multilíngue, ele deve oferecer apenas conjuntos de traduções totalmente traduzidos e verificados. Traduzir a UI e o conteúdo próprio para alguns idiomas pode fazer sentido para uma empresa, dependendo do público-alvo, mas tudo isso precisa ser mantido e sincronizado
      Conteúdo de usuários não deve ser mexido. Não deve ser traduzido automaticamente, a menos que seja colocado como um recurso auxiliar sob um botão do tipo “Espanhol detectado. Clique para ver uma tradução automática em inglês”; e, na verdade, até isso é melhor deixar para o navegador
      Basta escolher o idioma pelo Accept-Language e oferecer também uma forma de alternar
      A Wikipedia, na verdade, não funciona oferecendo traduções do mesmo conteúdo. Cada idioma é uma instância separada e, fora as mensagens da UI do MediaWiki, não são traduções do mesmo artigo, mas artigos diferentes em outros idiomas, com alguma sobreposição. A versão em neerlandês do verbete Language não afirma ser uma tradução para o neerlandês do mesmo texto, e fica deliberadamente em um subdomínio e caminho diferentes
    • Tecnicamente, o Accept-Language pode atribuir a cada idioma um “valor de qualidade” ou peso: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/...
      Acho que há muito espaço para melhoria tanto nos navegadores quanto nos sites
      Sites deveriam permitir que o usuário sobrescrevesse o idioma solicitado pelo navegador. Navegadores também deveriam permitir escolher, por site, opções como “padrão do site”, “solicitar idioma padrão do sistema”, “solicitar inglês”, “solicitar chinês”, “solicitar espanhol” etc.
      A melhor abordagem é o site expor a lista de idiomas suportados. Por exemplo, isso poderia ficar em manifest.json: https://developer.mozilla.org/en-US/docs/Web/Progressive_web... O formato poderia ser algo como Map>
      A seleção de idioma deveria acontecer no lado do cliente, não no servidor
    • Accept-Language não é uma lista ordenada, mas uma lista parcialmente ordenada
      Se você quer a versão em inglês de um site de notícias em inglês mesmo que exista uma tradução para o francês, basta colocar os dois idiomas na mesma prioridade
    • Não sei de onde vem a suposição de que o usuário especifica o idioma mais prático, e não sua preferência real
      Dada a realidade de que muitos, talvez quase todos os sites não respeitam o cabeçalho Accept-Language, é difícil imaginar que os usuários estejam fazendo esse tipo de teoria dos jogos mental ao escolher essa configuração
  • Já participei de um projeto para implementar acessibilidade e suporte multilíngue em um site ligado ao governo
    Usamos Accept-Language para escolher o padrão entre os idiomas suportados, mas o PM reverteu essa decisão e forçou o inglês como padrão
    O auditor de acessibilidade colocou “uso de Accept-Language” como item vermelho no relatório de auditoria e, ao saber que isso havia sido implementado inicialmente e depois revertido, repreendeu duramente a empresa
    Graças a essa e outras decisões idiotas parecidas, acabamos tendo mais algumas semanas de trabalho no contrato

  • Já que parece ser um espaço para desabafar sobre problemas de idioma, também tenho uma reclamação sobre o Apple TV
    Tenho familiares que só falam japonês, e minha conta Apple é da Finlândia. Tentamos assistir juntos a The Martian, mas, embora uma faixa de áudio dublada em japonês claramente exista, não era possível selecioná-la
    Opções sem relação com o país da conta simplesmente nem são mostradas, e para contornar isso é preciso mudar a conta Apple inteira para outro país
    Só que, se você tiver uma assinatura ativa do Apple TV, nem essa mudança dá para fazer. Resultado: não conseguimos assistir Apple TV em família

    • Provavelmente é uma questão de licenciamento. A dublagem em japonês pode não estar autorizada para reprodução na Finlândia. Nesse caso, a burrice é culpa da lei de direitos autorais ou dos advogados
    • A Netflix também tinha algo parecido e estranho na Finlândia
      Se minha memória não falha, havia uma configuração de idioma da conta, e para assistir a Kim's Convenience era preciso configurá-la em inglês. Não era necessário VPN nem fingir estar em outro país, mas, se você não definisse o idioma correto, o conteúdo ficava oculto
      Isso acontecia mesmo ao assistir ao conteúdo com UI em finlandês e legendas em inglês
  • Quando estou no exterior, isso é realmente absurdo; e, mesmo no meu país, é irritante quando a versão localizada não é equivalente, como em documentação de programação
    Mesmo no caso ideal, é bem provável que eu prefira o original em inglês; na prática, muitas vezes é tradução automática, o que é muito pior
    Outra coisa extremamente irritante que tenho visto com mais frequência ultimamente é aparecerem nos resultados de busca versões traduzidas automaticamente do conteúdo. O Reddit faz isso agora, e é horrível
    Um dos principais motivos para usar termos de busca que não estão em inglês é obter resultados que não estejam em inglês. Por exemplo, quando se procura informação sobre um tema que não se aplica ao mundo inteiro

    • Quase dá para ouvir a equipe de produto do Reddit criando esse recurso enquanto se imagina composta por usuários monolíngues e cantarola o hino dos EUA
      O resto do mundo consegue entender bem vários idiomas
    • Ultimamente tenho ficado bastante frustrado com a documentação do Mongo
      Não testei se é baseado em localização ou em Accept-Language, mas o comportamento é realmente enlouquecedor
      Se faço uma busca na web, aparece o resultado da versão em inglês; ao abrir, assim que o JavaScript carrega, ele muda para PT-BR e, alguns segundos depois, quando a página termina de carregar, volta para o inglês, deixando o slug /pt-br/ na URL
      É óbvio demais que a tradução não foi feita nem revisada por humanos. Além disso, sou usuário de PT-PT, então as diferenças em relação ao PT-BR tornam tudo ainda mais irritante
  • Uma vez criei um pequeno sistema que analisava o Accept-Language, atribuía pesos às prioridades do usuário e escolhia, entre as opções que oferecíamos, o idioma mais próximo da preferência dele
    Por exemplo, se havia tradução para português do Brasil, mas não para português de Portugal, entregávamos a primeira para um usuário que pedisse a segunda, a menos que houvesse uma correspondência exata com prioridade mais baixa
    Tecnicamente funcionava bem, o código era limpo e foi divertido de fazer
    Mas, do ponto de vista do usuário, a maioria simplesmente queria inglês, independentemente do cabeçalho Accept-Language. Dava para mudar no rodapé, mas acho que não era visível o suficiente
    Agora nós simplesmente perguntamos, e os usuários ficam mais satisfeitos

    • Se “perguntar” significa mostrar primeiro um muro de seleção de idioma toda vez que alguém visita o site sem cookies, isso é um sofrimento recorrente
      É difícil saber como permanecer exatamente na página em que cliquei. Fico em dúvida se o botão “continue” aplica o valor pré-selecionado ou apenas fecha o pop-up e continua mostrando a página atual
      Se for o primeiro caso, nem sei se o valor pré-selecionado é o idioma da página atual ou outro idioma, e fico pensando se devo tentar adivinhar o locale atual, selecioná-lo e então fechar o pop-up. Chego a pensar se dá para contornar removendo o modal nas ferramentas de desenvolvedor. Até um pequeno botão de fechar é um luxo nesses muros de idioma
      Em 95 de cada 100 vezes, estou bem com o idioma em que cliquei. Se eu precisar das informações regionais de entrega ou das opções de pagamento da versão em alemão, vou procurar o seletor de idioma no canto superior direito ou no rodapé
      Acho que a web seria muito mais feliz se ele estivesse em um desses dois lugares, sem pop-ups de JavaScript aparecendo o tempo todo
    • Ainda assim, eu gostaria de deixar o Accept-Language como padrão, mas o essencial é perguntar ao usuário
      Tenho curiosidade sobre padrões para oferecer opções. Este texto é bom por rejeitar ícones, mas não gosto da forma como reduz várias regiões a um único idioma: https://usersnap.com/blog/design-language-switch/
    • Para muita gente, esse valor provavelmente está definido como o padrão do sistema operacional, a pessoa simplesmente se acostumou com isso e talvez nem saiba como alterar