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

+18 -1
View File
@@ -49,6 +49,12 @@ if [[ " $ENABLED_LOCALES " =~ " en " ]]; then
done
fi
if [[ " $ENABLED_LOCALES " =~ " es " ]]; then
for p in /series /catalogo /comparacion /componentes /diagnostico /frameworks /glosario /selector /acerca; do
status 200 "/es$p"
done
fi
# 2. Idiomas INATIVOS: redirecionam com 307 para o idioma fallback (en se ativo, senão pt)
for l in $ALL_LOCALES; do
if [[ ! " $ENABLED_LOCALES " =~ " $l " ]]; then
@@ -84,6 +90,9 @@ else
if [[ ! " $ENABLED_LOCALES " =~ " es " ]]; then
destino 307 / /en 'Accept-Language: es-MX,es;q=0.9'
destino 307 / /en 'Cookie: NEXT_LOCALE=es'
else
destino 307 / /es 'Accept-Language: es-MX,es;q=0.9'
destino 307 / /es 'Cookie: NEXT_LOCALE=es'
fi
if [[ ! " $ENABLED_LOCALES " =~ " fr " ]]; then
destino 307 / /en 'Accept-Language: fr-CA,fr;q=0.9'
@@ -121,8 +130,16 @@ if [[ " $ENABLED_LOCALES " =~ " en " ]]; then
case "$head_en" in *"$marca"*) ;; *) echo "FALHOU /en/about: $marca fora do <head>"; falhas=$((falhas + 1));; esac
done
# 7. Varredura estrita contra vazamento de português (texto visível e blocos ld+json) nas 36 rotas
# 7. Varredura estrita contra vazamento de português (texto visível e blocos ld+json) nas rotas inglesas e espanholas
python3 scripts/verifica-vazamentos.py "$base" || falhas=$((falhas + 1))
fi
if [[ " $ENABLED_LOCALES " =~ " es " ]]; then
html_es=$(curl -s -A 'Mozilla/5.0 Chrome/130' "$base/es/acerca")
head_es=${html_es%%</head>*}
for marca in '<title>' 'rel="canonical"'; do
case "$head_es" in *"$marca"*) ;; *) echo "FALHOU /es/acerca: $marca fora do <head>"; falhas=$((falhas + 1));; esac
done
fi
exit $((falhas > 0))