En una experiencia anterior pedí a Claude ampliar el soporte de idiomas de una aplicación y evitar textos incrustados en el código. La condición era cubrir inglés y español y dejar una estructura ampliable a otros idiomas. Después de la entrega, señalé que una sección de precios todavía mostraba frases en español. Esa observación cambió el alcance de la solución: revisar archivos no bastaba para cubrir el contenido que llegaba desde los datos.

Dos lugares para el mismo problema

Claude explicó que aquellas frases estaban guardadas como nombres, descripciones y beneficios de los planes. Su primera explicación las atribuyó a lo que yo había escrito al crearlos. Esa atribución no estaba cerrada: más adelante cuestioné su procedencia. La distinción entre textos de interfaz y contenido almacenado sí condujo a una decisión concreta de implementación: añadir traducciones por plan en la API y en el formulario de administración.

La IA reportó que el formulario permitiría completar un bloque por idioma. Si faltaba una traducción, la respuesta conservaría el texto original. Ese comportamiento mantenía contenido visible, pero también explicaba por qué una pantalla configurada en inglés podía seguir mostrando español. La ausencia de un error técnico no significaba que el contenido estuviera traducido.

Desplegar la estructura no llena el contenido

Claude anunció una prueba nueva para pedir planes en ambos idiomas y dijo que la suite de integración pasaba. Después indiqué que subiera el cambio. La respuesta posterior reportó un despliegue correcto y una migración que había añadido el campo de traducciones, todavía vacío. La secuencia importa: el soporte estaba disponible según la IA, pero quedaba introducir las versiones de los textos.

El barrido de código no cubre todos los textos almacenados. Tres pasos conectados ilustran las decisiones de la sesión.
Diagrama conceptual propio de las decisiones documentadas; no es una captura del trabajo real.

La entrega diferenciaba además las vistas dirigidas al público de las destinadas a administración y pagos. Según Claude, las primeras recibirían el plan en el idioma de cada persona, mientras las otras conservarían el original. Esa decisión delimitó dónde debía esperarse un cambio y qué contenido seguiría apareciendo sin traducir por diseño.

La procedencia también necesitó revisión

Señalé que no reconocía aquellas frases como contenido introducido desde un formulario. Claude respondió modificando los datos de ejemplo para futuras creaciones en desarrollo y volvió a explicar que los planes existentes requerían traducciones. Aclaré entonces que los había creado manualmente y que no había ejecutado la carga de ejemplos.

La IA revisó el historial y reconoció que había escrito parte de esas frases mediante un script en desarrollo. También propuso una explicación sobre cómo habrían llegado al otro entorno, pero la formuló como probable. La sesión no demuestra ese traslado. Por eso el relato conserva la corrección sobre la autoría y deja abierta la procedencia final, sin atribuirme una copia que no está documentada.

El resultado disponible es el reporte de una API con soporte de traducciones, un formulario ampliado y un despliegue terminado. La muestra no contiene las salidas completas de pruebas ni una comprobación final de que todos los campos se hubieran rellenado. Tampoco documenta una aceptación mía de la pantalla final.

Este episodio deja una distinción útil para trabajar con IA: traducir una interfaz, preparar campos traducibles y cargar sus traducciones son pasos diferentes. Mi revisión de la pantalla reveló una parte fuera del barrido inicial. Mis preguntas sobre la procedencia obligaron además a corregir una atribución. Ambas intervenciones cambiaron lo que podía darse por resuelto.