Implement Phase 1 of i18n spec: - Configure next-intl with 6 locales (pt, en, es, fr, de, zh-CN) and pathnames - Move routes to app/[locale] structure with localized layouts and metadata - Add middleware for root language negotiation (307), legacy redirects (308), and 404 for non-pt book - Implement language selector dropdown in header with cookie persistence - Add system typography rules for zh-CN and word-break/hyphenation for de/fr Co-Authored-By: Antigravity <noreply@google.com>
40 lines
1.0 KiB
React
40 lines
1.0 KiB
React
import { paginaMeta, jsonLd } from "@/lib/seo";
|
|
|
|
export const metadata = paginaMeta({
|
|
titulo: "Catálogo de placas ESP32",
|
|
descricao: "Placas de desenvolvimento com ESP32 disponíveis no Brasil, com filtro por série, conector e conversor USB-serial.",
|
|
caminho: "/catalogo",
|
|
keywords: ["placas ESP32", "DevKit ESP32", "comprar ESP32", "ESP32 DevKitC"],
|
|
});
|
|
|
|
export default function Layout({ children }) {
|
|
return (
|
|
<>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.aplicacaoWeb({
|
|
nome: "Catálogo de Placas ESP32",
|
|
descricao: "Guia e catálogo interativo de placas de desenvolvimento e DevKits com microcontroladores ESP32.",
|
|
caminho: "/catalogo",
|
|
})
|
|
),
|
|
}}
|
|
/>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.trilha([
|
|
{ nome: "Início", caminho: "/" },
|
|
{ nome: "Catálogo de Placas", caminho: "/catalogo" },
|
|
])
|
|
),
|
|
}}
|
|
/>
|
|
{children}
|
|
</>
|
|
);
|
|
}
|