- 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>
82 lines
2.6 KiB
React
82 lines
2.6 KiB
React
import { paginaMeta, jsonLd } from "@/lib/seo";
|
|
import { categoriasGlossario as categoriasGlossarioPt } from "@/lib/glossarioData";
|
|
import { categoriasGlossario as categoriasGlossarioEn } from "@/lib/data/en/glossario.js";
|
|
|
|
export async function generateMetadata({ params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
return paginaMeta({
|
|
titulo: isEn
|
|
? "ESP32 Technical Glossary: Terms and Concepts"
|
|
: "Glossário Técnico do ESP32: Termos e Conceitos",
|
|
descricao: isEn
|
|
? "Over 50 essential ESP32 concepts explained: GPIO, Strapping Pins, ULP, PSRAM, FreeRTOS, eFuse, Deep Sleep, OTA, Secure Boot, ECDSA, Matter, and Thread."
|
|
: "Mais de 50 termos e conceitos essenciais do ecossistema ESP32 explicados em português: GPIO, Strapping Pins, ULP, PSRAM, FreeRTOS, eFuse, Deep Sleep, OTA, Secure Boot, ECDSA, Matter e Thread.",
|
|
caminho: "/glossario",
|
|
locale,
|
|
keywords: isEn
|
|
? [
|
|
"ESP32 glossary",
|
|
"what is GPIO",
|
|
"what are strapping pins",
|
|
"what is ESP32 ULP",
|
|
"what is ESP32 PSRAM",
|
|
"microcontroller technical terms",
|
|
"ESP32 hardware concepts",
|
|
]
|
|
: [
|
|
"glossário ESP32",
|
|
"o que é GPIO",
|
|
"o que é strapping pins",
|
|
"o que é ULP ESP32",
|
|
"o que é PSRAM ESP32",
|
|
"termos técnicos microcontrolador",
|
|
"conceitos ESP32 português",
|
|
],
|
|
});
|
|
}
|
|
|
|
export default async function GlossarioLayout({ children, params }) {
|
|
const { locale } = await params;
|
|
const isEn = locale === "en";
|
|
const categorias = isEn ? categoriasGlossarioEn : categoriasGlossarioPt;
|
|
|
|
return (
|
|
<>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(jsonLd.glossario(categorias, locale)),
|
|
}}
|
|
/>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.trilha([
|
|
{ nome: isEn ? "Home" : "Início", caminho: isEn ? "/en" : "/" },
|
|
{ nome: isEn ? "Technical Glossary" : "Glossário Técnico", caminho: isEn ? "/en/glossary" : "/glossario" },
|
|
])
|
|
),
|
|
}}
|
|
/>
|
|
<script
|
|
type="application/ld+json"
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(
|
|
jsonLd.aplicacaoWeb({
|
|
nome: isEn ? "ESP32 Technical Glossary" : "Glossário Técnico do ESP32",
|
|
descricao: isEn
|
|
? "Encyclopedia of hardware and software technical terms for the ESP32 ecosystem."
|
|
: "Enciclopédia de termos técnicos e conceitos de hardware e software do ecossistema ESP32.",
|
|
caminho: isEn ? "/en/glossary" : "/glossario",
|
|
locale,
|
|
})
|
|
),
|
|
}}
|
|
/>
|
|
{children}
|
|
</>
|
|
);
|
|
}
|