feat(i18n): Spanish localization (phase 4)
CI / Lint e auditorias (push) Successful in 1m31s
CI / Trivy (dependências e segredos) (push) Successful in 10s
CI / Imagem Docker (linux/arm64) (push) Successful in 2m23s

Complete implementation of Spanish (es-419) language support:
- Canonical catalogs and data: messages/es.json, data/es/**, lib/data/es/**, public/exemplos/es/**
- Canonical slugs: /es/series, /es/catalogo, /es/comparacion, /es/componentes, /es/diagnostico, /es/frameworks, /es/glosario, /es/selector, /es/acerca
- Dedicated search index at /api/busca/es with Spanish accent normalization
- Strict exclusion of book references in Spanish routes and catalogs
- Language selector and root negotiation with es active (ENABLED_LOCALES = ['pt', 'en', 'es'])
- Extended verification suite: check-i18n, smoke-imagem and verifica-vazamentos

Co-Authored-By: Antigravity <noreply@google.com>
This commit is contained in:
Lucas RayanandAntigravity committed 2026-11-01 19:50:20 -03:00
1 parent 0940814522
commit 660b28c09d
72 files changed
+17848 -947

No files matched your search

+16
View File
@@ -45,6 +45,7 @@ export function generateStaticParams() {
export async function generateMetadata({ params }) {
const { locale } = await params;
const isEn = locale === "en";
const isEs = locale === "es";
const ogLocaleMap = {
pt: "pt_BR",
@@ -59,10 +60,14 @@ export async function generateMetadata({ params }) {
const titleDefault = isEn
? "ESPDocs · ESP32 Open Documentation"
: isEs
? "ESPDocs · Documentación abierta de ESP32"
: "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."
: isEs
? "Especificaciones, patillaje, comparación y selección de las 12 series de microcontroladores ESP32. Hojas de datos, periféricos, seguridad en hardware y diagramas de conexión."
: "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
@@ -72,6 +77,13 @@ export async function generateMetadata({ params }) {
"compare ESP32", "which ESP32 to choose", "ESP32 datasheet",
"microcontroller", "Espressif", "ESP-IDF", "IoT", "embedded systems",
]
: isEs
? [
"ESP32", "ESP32 en español", "documentación ESP32", "patillaje ESP32", "pinout ESP32",
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
"comparar ESP32", "cuál ESP32 elegir", "datasheet ESP32", "hoja de datos ESP32",
"microcontrolador", "Espressif", "ESP-IDF", "IoT", "sistemas embebidos",
]
: [
"ESP32", "ESP32 português", "documentação ESP32", "pinout ESP32",
"ESP32-S3", "ESP32-C3", "ESP32-C6", "ESP32-P4", "ESP32-H2",
@@ -112,6 +124,8 @@ export async function generateMetadata({ params }) {
title: titleDefault,
description: isEn
? "Specifications, pinouts, comparison and selection of 12 ESP32 microcontroller series."
: isEs
? "Especificaciones, patillaje, comparación y selección de las 12 series de microcontroladores ESP32."
: "Especificações, pinagem, comparação e seleção das 12 séries de microcontroladores ESP32, em português brasileiro.",
},
twitter: {
@@ -119,6 +133,8 @@ export async function generateMetadata({ params }) {
title: titleDefault,
description: isEn
? "Specifications, pinouts, comparison and selection of 12 ESP32 series."
: isEs
? "Especificaciones, patillaje, comparación y selección de las 12 series de ESP32."
: "Especificações, pinagem, comparação e seleção das 12 séries de ESP32, em português.",
},
robots: {