Files
ESPDocs/i18n/routing.js
T
Lucas RayanandAntigravity d479a8d361
CI / Lint e auditorias (push) Successful in 41s
CI / Trivy (dependências e segredos) (push) Successful in 10s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m5s
feat(i18n): restrict public routes and metadata to enabled locales
- Add ENABLED_LOCALES configuration in i18n/links.js (currently ["pt"])
- Redirect inactive locale prefixes to /pt via 307 in middleware.js
- Restrict root locale negotiation to active locales with fallback to pt
- Hide LanguageSelector when only one locale is enabled
- Generate sitemap, hreflang alternates, and og:locale only for active locales
- Generate static SSG pages only for active locales in build
- Adapt check:i18n and smoke-imagem.sh to validate active vs inactive locales

Co-Authored-By: Antigravity <noreply@google.com>
2026-11-01 12:10:25 -03:00

103 lines
2.0 KiB
JavaScript

import { defineRouting } from "next-intl/routing";
import { ENABLED_LOCALES } from "./links";
export const routing = defineRouting({
locales: ENABLED_LOCALES,
defaultLocale: ENABLED_LOCALES.includes("en") ? "en" : (ENABLED_LOCALES[0] || "pt"),
localePrefix: "always",
pathnames: {
"/": "/",
"/series": {
pt: "/series",
en: "/series",
es: "/series",
fr: "/series",
de: "/serien",
"zh-CN": "/series",
},
"/series/[key]": {
pt: "/series/[key]",
en: "/series/[key]",
es: "/series/[key]",
fr: "/series/[key]",
de: "/serien/[key]",
"zh-CN": "/series/[key]",
},
"/catalogo": {
pt: "/catalogo",
en: "/catalog",
es: "/catalogo",
fr: "/catalogue",
de: "/katalog",
"zh-CN": "/catalog",
},
"/comparacao": {
pt: "/comparacao",
en: "/compare",
es: "/comparacion",
fr: "/comparaison",
de: "/vergleich",
"zh-CN": "/compare",
},
"/componentes": {
pt: "/componentes",
en: "/components",
es: "/componentes",
fr: "/composants",
de: "/komponenten",
"zh-CN": "/components",
},
"/diagnostico": {
pt: "/diagnostico",
en: "/diagnostics",
es: "/diagnostico",
fr: "/diagnostic",
de: "/diagnose",
"zh-CN": "/diagnostics",
},
"/frameworks": {
pt: "/frameworks",
en: "/frameworks",
es: "/frameworks",
fr: "/frameworks",
de: "/frameworks",
"zh-CN": "/frameworks",
},
"/frameworks/[key]": {
pt: "/frameworks/[key]",
en: "/frameworks/[key]",
es: "/frameworks/[key]",
fr: "/frameworks/[key]",
de: "/frameworks/[key]",
"zh-CN": "/frameworks/[key]",
},
"/glossario": {
pt: "/glossario",
en: "/glossary",
es: "/glosario",
fr: "/glossaire",
de: "/glossar",
"zh-CN": "/glossary",
},
"/seletor": {
pt: "/seletor",
en: "/selector",
es: "/selector",
fr: "/selecteur",
de: "/auswahl",
"zh-CN": "/selector",
},
"/sobre": {
pt: "/sobre",
en: "/about",
es: "/acerca",
fr: "/a-propos",
de: "/ueber-uns",
"zh-CN": "/about",
},
"/livro": {
pt: "/livro",
},
},
});