Cobertura
- UI: toda la interfaz de los cinco portales está traducida; sin strings hardcoded — todo pasa por
t()de next-intl. - API: más de 100 rutas devuelven mensajes de error localizados mediante
getApiTranslations(request). - Fechas y números: formateados con el locale activo mediante
useLocale()(client) /getLocale()(server) — nuncapt-BRhardcoded. - Prompts de LLM:
PromptTemplatetiene el campolocale;loadPrompt()resuelve con cascada de locale, y el tutor inyecta una regla de idioma para locales distintos a pt-BR.
Quality gate
Un script de CI (check-translations.ts) valida la paridad de claves, la paridad de placeholders y detecta entradas vacías/no traducidas en los cuatro archivos de locale. pt-BR es el locale de referencia; los demás locales hacen fallback a él si falta alguna clave.
Documentación en 4 idiomas
La propia documentación pública se publica en los cuatro locales — las páginas en Español y Francés son traducciones asistidas por LLM de las fuentes pt-BR/en-US y muestran un badge "traducción asistida por IA".