Cobertura
- UI: toda a interface dos cinco portais e traduzida; sem strings hardcoded — tudo passa por
t()do next-intl. - API: 100+ rotas retornam mensagens de erro localizadas via
getApiTranslations(request). - Datas & numeros: formatados com o locale ativo via
useLocale()(client) /getLocale()(server) — nuncapt-BRhardcoded. - Prompts de LLM:
PromptTemplatetem campolocale;loadPrompt()resolve com cascata de locale, e o tutor injeta uma regra de idioma para locales nao-pt-BR.
Quality gate
Um script de CI (check-translations.ts) valida paridade de chaves, paridade de placeholders e detecta entradas vazias/nao-traduzidas nos quatro arquivos de locale. pt-BR e o locale de referencia; outros locales fazem fallback para ele se faltar uma chave.
Docs em 4 idiomas
A propria documentacao publica e publicada nos quatro locales — as paginas em Espanhol e Frances sao traducoes assistidas por LLM das fontes pt-BR/en-US e carregam um badge "traducao assistida por IA".