El párrafo que se saltó la traducción porque nunca preguntó
Un lector lo detectó en una captura de pantalla antes que yo: el pie de página en español tenía una tagline traducida, una navegación traducida, un enlace “Preferencias de análisis” traducido, y luego, justo en medio de todo eso, un párrafo completo en inglés explicando cómo funciona la analítica del sitio.
El pase de i18n que publicó la localización en español de este sitio revisó cada cadena que pudo encontrar en ui.ts, el objeto de cadenas compartido del que toman todos los componentes. Encontró la tagline. Encontró las etiquetas de navegación. Encontró la etiqueta del botón “Analytics preferences”. No encontró la descripción de analítica, porque ese párrafo nunca estuvo en ui.ts. Estaba codificado directamente en Footer.astro, tres líneas de texto en inglés justo al lado de una llamada {strings.footer.tagline} que, a primera vista, parecía estar haciendo el mismo trabajo.
Esa es la parte que vale la pena recordar: una cadena codificada al lado de una traducida no parece rota. No lanza un error de build. No falla una verificación de tipos. Simplemente se renderiza en silencio en el idioma equivocado, para siempre, hasta que alguien lee la página en la localización que se supone debe soportar y nota la costura.
La solución fue mecánica una vez encontrado el problema: agregar footer.analyticsDescription a la interfaz de cadenas compartida, escribir la traducción al español, reemplazar el párrafo codificado por {strings.footer.analyticsDescription}. Tres líneas cambiadas. El error había estado activo desde que se publicó la localización en español.
De este caso no salió ningún cambio de proceso. Es un recordatorio de que “traducido” y “hacer grep de cadenas en inglés codificadas en cada componente, no solo en los que una checklist recordó visitar” no son la misma auditoría.
Lecturas relacionadas
Traducir una página de marketing sin duplicarla
La página en español existía, tenía una URL, aparecía en hreflang, y cada palabra estaba en inglés. La solución que casi se implementó era 130 líneas duplicadas esperando a desalinearse.
Decirle a un lector en español por qué la página está en inglés
El fallback era la opción correcta por defecto y completamente silencioso. Dos tipos distintos de fallback necesitaban dos chequeos de detección distintos, y el caso negativo era la mitad que valía la pena probar.
La portada fue la única página que el i18n olvidó
El selector de idioma funcionaba perfecto. Solo que no había nada del otro lado: seis componentes de literales en inglés, un archivo de datos plano en inglés, y un servidor de desarrollo que mintió durante veinte minutos.