web-next: página 404 temática (not-found)
Añade una 404 con el markup del tema (main-page > middle-content > body-content > title-content + body-box-content justified), dentro del layout de [locale] (cabecera/vídeo/pie). Como el layout raíz es un segmento dinámico ([locale]), se usa el patrón de next-intl: `[locale]/not-found.tsx` + catch-all `[locale]/[...rest]/page.tsx` que dispara notFound(). Bilingüe (claves NotFound.title/message en es/en). Devuelve HTTP 404; las rutas conocidas siguen 200. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
import { notFound } from 'next/navigation'
|
||||
|
||||
/**
|
||||
* Catch-all de rutas inexistentes bajo un idioma: dispara notFound() para que
|
||||
* se renderice la 404 temática (`[locale]/not-found.tsx`) dentro del layout.
|
||||
*/
|
||||
export default function CatchAllNotFound() {
|
||||
notFound()
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { getTranslations } from 'next-intl/server'
|
||||
|
||||
/**
|
||||
* 404 temática (dentro del layout de [locale] → cabecera/vídeo/pie + tema).
|
||||
* Se muestra cuando se llama a notFound() dentro de un segmento de idioma,
|
||||
* incluido el catch-all `[...rest]` para rutas inexistentes.
|
||||
*/
|
||||
export default async function NotFound() {
|
||||
const t = await getTranslations('NotFound')
|
||||
return (
|
||||
<div className="main-page">
|
||||
<div className="middle-content">
|
||||
<div className="body-content">
|
||||
<div className="title-content">
|
||||
<h1>{t('title')}</h1>
|
||||
</div>
|
||||
<div className="box-content">
|
||||
<div className="body-box-content justified">
|
||||
<p>{t('message')}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -510,5 +510,9 @@
|
||||
"backToStore": "Back to the store",
|
||||
"orderNotFound": "Order not found or already processed.",
|
||||
"genericError": "An error occurred. Please try again."
|
||||
},
|
||||
"NotFound": {
|
||||
"title": "Page not found",
|
||||
"message": "It looks like the page you are looking for doesn't exist or isn't available."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -510,5 +510,9 @@
|
||||
"backToStore": "Volver a la tienda",
|
||||
"orderNotFound": "Orden no encontrada o ya procesada.",
|
||||
"genericError": "Ha ocurrido un error. Inténtalo de nuevo."
|
||||
},
|
||||
"NotFound": {
|
||||
"title": "Página no encontrada",
|
||||
"message": "Parece que la página que estás buscando no existe o no se encuentra disponible."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user