feat(i18n): French and German localization (phase 5)
CI / Lint e auditorias (push) Successful in 49s
CI / Trivy (dependências e segredos) (push) Successful in 11s
CI / Imagem Docker (linux/arm64) (push) Successful in 3m14s

- Add full message catalogs and content for French (fr) and German (de)
- Implement ASCII canonical slugs for French and German routes
- Add language-specific search endpoints (/api/busca/fr, /api/busca/de)
- Configure strict 404 responses for /fr/livro and /de/livro
- Localize SEO, OpenGraph (fr_FR, de_DE), Twitter and JSON-LD schemas
- Add localized code example comments across 14 examples for fr and de
- Enable 'fr' and 'de' in ENABLED_LOCALES with root negotiation and redirect
- Extend test suite in check-i18n, smoke-imagem and verifica-vazamentos

Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
Lucas RayanandAntigravity committed 2026-11-01 22:06:36 -03:00
1 parent 7b673aeb4b
commit 7fce46b9e1
104 files changed
+33369 -686

No files matched your search

+2 -2
View File
@@ -3,12 +3,12 @@ import { construirIndiceBusca } from "@/lib/searchIndex";
export const dynamic = "force-static";
export function generateStaticParams() {
return [{ locale: "pt" }, { locale: "en" }, { locale: "es" }];
return [{ locale: "pt" }, { locale: "en" }, { locale: "es" }, { locale: "fr" }, { locale: "de" }];
}
export async function GET(request, { params }) {
const { locale } = await params;
const loc = locale === "en" ? "en" : locale === "es" ? "es" : "pt";
const loc = ["en", "es", "fr", "de"].includes(locale) ? locale : "pt";
return Response.json(construirIndiceBusca(loc), {
headers: {
"Cache-Control": "no-cache, no-store, must-revalidate",