O parágrafo que pulou a tradução porque nunca foi perguntado
Um leitor percebeu isso num screenshot antes de mim: o rodapé em espanhol tinha uma tagline traduzida, uma navegação traduzida, um link “Preferencias de análisis” traduzido, e então, bem no meio de tudo isso, um parágrafo inteiro em inglês explicando como funciona o analytics do site.
A passada de i18n que lançou o locale em espanhol deste site passou por toda string que conseguiu encontrar em ui.ts, o objeto de strings compartilhado de onde todo componente puxa seus textos. Ela encontrou a tagline. Encontrou os rótulos de navegação. Encontrou o rótulo do botão “Analytics preferences”. Ela não encontrou a descrição de analytics, porque esse parágrafo nunca esteve em ui.ts. Ele estava fixado diretamente em Footer.astro, três linhas de texto em inglês sentadas bem ao lado de uma chamada {strings.footer.tagline} que parecia, à primeira vista, estar fazendo o mesmo trabalho.
Essa é a parte que vale a pena lembrar: uma string fixada ao lado de uma traduzida não parece quebrada. Não gera um erro de build. Não falha numa checagem de tipos. Ela simplesmente renderiza silenciosamente no idioma errado, para sempre, até alguém ler a página no locale que ela deveria suportar e perceber a costura.
A correção foi mecânica assim que encontrada: adicionar footer.analyticsDescription à interface de strings compartilhada, escrever a tradução em espanhol, trocar o parágrafo fixado por {strings.footer.analyticsDescription}. Três linhas alteradas. O bug estava no ar desde que o locale em espanhol foi lançado.
Nenhuma mudança de processo saiu disso dessa vez. É um lembrete de que “traduzido” e “fazer grep por strings em inglês fixadas em todo componente, não só nos que uma checklist lembrou de visitar” não são a mesma auditoria.
Leitura relacionada
A homepage foi a página que o i18n esqueceu
O seletor de idioma funcionava, mas seis componentes da homepage ainda estavam em inglês, e um bug no dev server somou vinte minutos de desvio.
Dois bugs de i18n no Astro que só aparecem quando você compara o HTML renderizado
O fallback do Astro esconde traduções reais atrás do getStaticPaths, e o Astro.url reporta a localização errada em páginas renderizadas por fallback.
Consertando a lista desatualizada de repositórios fixados do GitHub
Um comentário que dizia 'espelha os repositórios fixados' foi verdade uma vez. Uma lista fixa sem checagem de desvio acaba mentindo sobre o que espelha.
Você também pode achar útil
AdGuard para iOS
Bloqueio de anúncios e rastreadores em todo o sistema no iOS, sem necessidade de um servidor DNS separado.
Como afiliado da AdGuard, ganho com compras qualificadas.
Saiba maisProton Mail
E-mail criptografado de ponta a ponta, com arquitetura de acesso zero.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba maisProton Drive
Armazenamento em nuvem criptografado, da equipe por trás do Proton Mail.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba mais