- Localize skip-to-content accessibility link and breadcrumb navigation - Convert section layouts to dynamic generateMetadata with English titles, descriptions, and structured data - Eliminate mixed language expressions and translate remaining SoC connection pin warnings and descriptions - Translate component registry items, categories, tags, and IDF Component Manager guide - Add strict identical string verification to scripts/check-i18n.mjs with technical allowlist Co-Authored-By: Antigravity <noreply@google.com>
74 lines
2.8 KiB
React
74 lines
2.8 KiB
React
import { paginaMeta, jsonLd } from "@/lib/seo";
|
|
|
|
export async function generateMetadata({ params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
const meta = paginaMeta({
|
|
titulo: isEn ? "ESP32 Series: Technical Guide and Pinouts" : "Séries ESP32",
|
|
descricao: isEn
|
|
? "All 12 ESP32 series side by side: ESP32, S2, S3, S31, C2, C3, C5, C6, C61, P4, H2 and H4. Architecture, memory, radio, peripherals and pinouts for each one."
|
|
: "As 12 séries de ESP32 lado a lado: ESP32, S2, S3, S31, C2, C3, C5, C6, C61, P4, H2 e H4. Arquitetura, memória, rádio, periféricos e pinagem de cada uma, em português.",
|
|
caminho: "/series",
|
|
locale,
|
|
keywords: isEn
|
|
? ["ESP32 series", "ESP32 models", "ESP32 S3", "ESP32 C6", "ESP32 P4", "difference between ESP32"]
|
|
: ["séries ESP32", "modelos de ESP32", "ESP32 S3", "ESP32 C6", "ESP32 P4", "diferença entre ESP32"],
|
|
});
|
|
meta.title = {
|
|
default: isEn ? "ESP32 Series" : "Séries ESP32",
|
|
template: "%s · ESPDocs",
|
|
};
|
|
return meta;
|
|
}
|
|
|
|
const faqsPt = [
|
|
{
|
|
pergunta: "Quantas séries de ESP32 existem atualmente?",
|
|
resposta: "Atualmente o ecossistema Espressif conta com 12 séries principais: ESP32 clássico, ESP32-S2, ESP32-S3, ESP32-S31, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-P4, ESP32-H2 e ESP32-H4.",
|
|
},
|
|
{
|
|
pergunta: "Quais são as séries mais recentes da Espressif?",
|
|
resposta: "As séries mais recentes incluem o ESP32-P4 (focado em alto desempenho com dual-core RISC-V a 400 MHz), o ESP32-C5 (primeiro chip com Wi-Fi dual-band 2.4/5 GHz da Espressif) e o ESP32-C61 (Wi-Fi 6 e Bluetooth 6 de baixo custo).",
|
|
},
|
|
];
|
|
|
|
const faqsEn = [
|
|
{
|
|
pergunta: "How many ESP32 series currently exist?",
|
|
resposta: "Currently, the Espressif ecosystem features 12 primary series: classic ESP32, ESP32-S2, ESP32-S3, ESP32-S31, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-P4, ESP32-H2, and ESP32-H4.",
|
|
},
|
|
{
|
|
pergunta: "What are the latest series from Espressif?",
|
|
resposta: "The newest series include the ESP32-P4 (high-performance dual-core RISC-V at 400 MHz), the ESP32-C5 (first dual-band 2.4/5 GHz Wi-Fi chip from Espressif), and the ESP32-C61 (cost-effective Wi-Fi 6 and Bluetooth 6).",
|
|
},
|
|
];
|
|
|
|
export default async function Layout({ children, params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
const faqs = isEn ? faqsEn : faqsPt;
|
|
|
|
return (
|
|
<>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.trilha([
|
|
{ nome: isEn ? "Home" : "Início", caminho: isEn ? "/en" : "/" },
|
|
{ nome: isEn ? "ESP32 Series" : "Séries ESP32", caminho: isEn ? "/en/series" : "/series" },
|
|
])
|
|
),
|
|
}}
|
|
/>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(jsonLd.perguntas(faqs)),
|
|
}}
|
|
/>
|
|
{children}
|
|
</>
|
|
);
|
|
}
|