feat(i18n): English localization (phase 3)
CI / Lint e auditorias (push) Successful in 1m51s
CI / Trivy (dependências e segredos) (push) Successful in 15s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m41s

- Translate content to English across messages/en.json, data/en, lib/data/en, and public/exemplos/en
- Implement localized routing, slugs, and language negotiation with fallback to en
- Build dedicated search index for English with strict book exclusion
- Update components and pages to dynamically render localized strings and datasets
- Verify full structural parity and exact 1:1 match on Portuguese pages via comparator

Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
Lucas RayanandAntigravity committed 2026-11-01 14:17:13 -03:00
1 parent 22b1f26aed
commit c1bd2c7e11
61 files changed
+18182 -1225

No files matched your search

+43 -18
View File
@@ -44,6 +44,8 @@ export function generateStaticParams() {
export async function generateMetadata({ params }) {
const { locale } = await params;
const isEn = locale === "en";
const ogLocaleMap = {
pt: "pt_BR",
en: "en_US",
@@ -55,30 +57,51 @@ export async function generateMetadata({ params }) {
const alternateLocales = ENABLED_LOCALES.filter((l) => l !== locale).map((l) => ogLocaleMap[l]);
const titleDefault = isEn
? "ESPDocs · ESP32 Open Documentation"
: "ESPDocs · Documentação do ESP32 em português";
const description = isEn
? "Specifications, pinouts, comparison and selection of 12 ESP32 microcontroller series. Datasheets, peripherals, hardware security and connection diagrams."
: "Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro. Datasheets, periféricos, segurança em hardware e diagramas de conexão.";
const keywords = isEn
? [
"ESP32", "ESP32 documentation", "ESP32 pinout",
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
"compare ESP32", "which ESP32 to choose", "ESP32 datasheet",
"microcontroller", "Espressif", "ESP-IDF", "IoT", "embedded systems",
]
: [
"ESP32", "ESP32 português", "documentação ESP32", "pinout ESP32",
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
"comparar ESP32", "qual ESP32 escolher", "datasheet ESP32",
"microcontrolador", "Espressif", "ESP-IDF", "IoT", "sistemas embarcados",
];
const languages = Object.fromEntries(
ENABLED_LOCALES.map((l) => [LANG_MAP[l] || l, `/${l}`])
);
if (ENABLED_LOCALES.includes("en")) {
languages["x-default"] = "/en";
}
return {
metadataBase: new URL(SITE.url),
title: {
default: "ESPDocs · Documentação do ESP32 em português",
default: titleDefault,
template: "%s · ESPDocs",
},
description:
"Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro. Datasheets, periféricos, segurança em hardware e diagramas de conexão.",
description,
applicationName: "ESPDocs",
authors: [{ name: "Lucas Rayan Guerra", url: "https://lucasrguerra.dev.br" }],
creator: "Lucas Rayan Guerra",
publisher: "Ciência Embarcada",
category: "technology",
keywords: [
"ESP32", "ESP32 português", "documentação ESP32", "pinout ESP32",
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
"comparar ESP32", "qual ESP32 escolher", "datasheet ESP32",
"microcontrolador", "Espressif", "ESP-IDF", "IoT", "sistemas embarcados",
],
keywords,
alternates: {
canonical: `/${locale}`,
languages: Object.fromEntries(
ENABLED_LOCALES.map((l) => [LANG_MAP[l] || l, `/${l}`])
),
languages,
},
openGraph: {
type: "website",
@@ -86,15 +109,17 @@ export async function generateMetadata({ params }) {
alternateLocale: alternateLocales.length > 0 ? alternateLocales : undefined,
url: `${SITE.url}/${locale}`,
siteName: SITE.nome,
title: "ESPDocs · Documentação do ESP32 em português",
description:
"Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro.",
title: titleDefault,
description: isEn
? "Specifications, pinouts, comparison and selection of 12 ESP32 microcontroller series."
: "Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro.",
},
twitter: {
card: "summary_large_image",
title: "ESPDocs · Documentação do ESP32 em português",
description:
"Especificações, pinagem, comparação e seleção das 12 séries de ESP32, em português.",
title: titleDefault,
description: isEn
? "Specifications, pinouts, comparison and selection of 12 ESP32 series."
: "Especificações, pinagem, comparação e seleção das 12 séries de ESP32, em português.",
},
robots: {
index: true,