feat(i18n): canonical strings, data extraction and validation (phase 2)
CI / Lint e auditorias (push) Failing after 1m11s
CI / Trivy (dependências e segredos) (push) Successful in 27s
CI / Imagem Docker (linux/arm64) (push) Skipped

Implement Phase 2 of i18n spec:
- Extract UI interface strings to messages/pt.json across 15 namespaces
- Extract canonical data files to data/pt/ (series, frameworks, conexoes)
- Create lib/data/pt/ modules (glossario, diagnostico, componentes, topicos)
- Implement lib/data/index.js async data loaders by locale
- Add automated check:i18n script to validate key parity and enforce no-book rules

Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
Lucas RayanandAntigravity committed 2026-11-01 09:37:44 -03:00
1 parent 83c0ba3e74
commit fb59015fca
22 files changed
+12766 -2

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
/**
* Carregadores de dados organizados por locale (seção 6.2 da spec).
* Suporta pt, en, es, fr, de, zh-CN com fallback para pt.
*/
export async function getSeries(locale = "pt") {
try {
return (await import(`@/data/${locale}/series.json`)).default;
} catch {
return (await import("@/data/pt/series.json")).default;
}
}
export async function getFrameworks(locale = "pt") {
try {
return (await import(`@/data/${locale}/frameworks.json`)).default;
} catch {
return (await import("@/data/pt/frameworks.json")).default;
}
}
export async function getConexoes(key, locale = "pt") {
try {
return (await import(`@/data/${locale}/conexoes/${key}.json`)).default;
} catch {
try {
return (await import(`@/data/pt/conexoes/${key}.json`)).default;
} catch {
return [];
}
}
}
export async function getGlossario(locale = "pt") {
try {
return await import(`@/lib/data/${locale}/glossario.js`);
} catch {
return await import("@/lib/data/pt/glossario.js");
}
}
export async function getDiagnostico(locale = "pt") {
try {
return await import(`@/lib/data/${locale}/diagnostico.js`);
} catch {
return await import("@/lib/data/pt/diagnostico.js");
}
}
export async function getComponentes(locale = "pt") {
try {
return await import(`@/lib/data/${locale}/componentes.js`);
} catch {
return await import("@/lib/data/pt/componentes.js");
}
}
export async function getTopicos(locale = "pt") {
try {
return await import(`@/lib/data/${locale}/topicos.js`);
} catch {
return await import("@/lib/data/pt/topicos.js");
}
}