Idiomas Suportados
| Código | Idioma |
|---|
pt | Português (padrão) |
en | Inglês |
Como Funciona
O AssessIQ usa a biblioteca next-intl com roteamento baseado em locale na URL:
https://app.assessiq.digital/pt/home → Português
https://app.assessiq.digital/en/home → Inglês
As traduções ficam em arquivos JSON na pasta messages/:
messages/
├── pt.json ← strings em Português
└── en.json ← strings em Inglês
Usando Traduções em Componentes
Em Client Components
"use client";
import { useTranslations } from "next-intl";
export function MeuComponente() {
const t = useTranslations();
return <h1>{t("home.title")}</h1>;
}
Em Server Components
import { getTranslations } from "next-intl/server";
export default async function Page() {
const t = await getTranslations();
return <h1>{t("home.title")}</h1>;
}
Estrutura das Chaves
As chaves seguem a notação de ponto por namespace:
{
"home.kpiModelsTitle": "Testes Criados",
"home.kpiStudentsTitle": "Alunos Cadastrados",
"people.fullName": "Nome Completo",
"adminNotifications.previewTitle": "Preview"
}
Não use um ponto em um valor que também tem sub-chaves. Por exemplo, "adminNotifications.preview": "Preview" conflita com "adminNotifications.preview.platform". Use um sufixo como previewTitle para valores folha.
Alterando o Idioma
O usuário pode alternar o idioma através do seletor de idioma na navbar. A preferência é salva via cookie e persiste entre sessões.
Adicionando Novas Strings
- Adicione a chave com o valor em
messages/pt.json
- Adicione a tradução correspondente em
messages/en.json
- Use
t("namespace.chave") no componente
Ambos os arquivos devem permanecer sincronizados — mesmas chaves, mesma contagem. O processo de build lança erro se uma chave existir em apenas um dos arquivos.