-
ESPDocs 1.2.0
Stablereleased this
2026-11-01 15:29:11 +00:00 | 0 commits to main since this releaseImagem
git.lucasrguerra.dev.br/lucasrguerra/espdocs:1.2.0Adicionado
- Infraestrutura de internacionalização com
next-intl(Fase 1):- Roteamento com prefixo de idioma sob
app/[locale]/, com 6 locales declarados (pt,en,es,fr,de,zh-CN). middleware.jscom negociação de idioma na raiz por cookieNEXT_LOCALEe cabeçalhoAccept-Language(com pesosq), redirecionamento 308 de URLs antigas sem prefixo para/pt/, e retorno 404 para/livrofora do português.- Seletor de idiomas acessível no cabeçalho com atalho para os 6 idiomas, persistência via cookie
NEXT_LOCALEe mapeamento de rota correspondente. - Regras de tipografia de sistema CJK para
zh-CNe hifenização/quebra de palavras paradeefr.
- Roteamento com prefixo de idioma sob
- Extração de strings e dados canônicos (Fase 2):
- Catálogo de mensagens canônico
messages/pt.jsoncobrindo 15 namespaces de páginas e componentes sem alteração de conteúdo. - Conjunto de dados canônicos em
data/pt/(series.json,frameworks.json,conexoes/*.json) e módulos emlib/data/pt/(glossario.js,diagnostico.js,componentes.js,topicos.js) com carregadores por locale emlib/data/index.js. - Script automatizado de validação
check:i18nintegrado aonpm run check, verificando paridade de chaves, ausência de valores vazios e garantia estrita de ausência de referências ao livro fora do português.
- Catálogo de mensagens canônico
- Controle de idiomas ativos e proteção contra conteúdo não traduzido:
- Configuração centralizada em
i18n/links.js(ENABLED_LOCALES), atualmente restrita a["pt"]. - Redirecionamento 307 de qualquer prefixo de idioma inativo para
/ptpreservando o caminho ou mapeamento equivalente. - Negociação de idioma na raiz selecionando unicamente entre os idiomas ativos (com fallback em
pt). - Seletor de idiomas no cabeçalho oculto enquanto apenas um idioma estiver ativo.
- Sitemap, hreflang/alternates e build SSG restritos aos idiomas ativos.
- Configuração centralizada em
Alterado
- Todas as páginas passam a viver sob
/pt/(por exemplo/pt/series). As URLs
antigas, sem prefixo, redirecionam com 308 para o endereço novo, e a raiz/
redireciona para o idioma negociado. O conteúdo do site em português não mudou. - O teste de subida da imagem na CI virou
scripts/smoke-imagem.sh: confere as
rotas de cada idioma, a negociação deAccept-Language, os redirects 308 das
URLs antigas, o 404 do livro fora do português e a metadata no<head>, e
falha se o servidor registrar erro de render. Ocurlsó na raiz deixou passar
uma home quebrada. - A metadata (título,
canonical, Open Graph) sempre sai no<head>do HTML
inicial, para qualquer cliente, como já era antes do i18n. - A raiz
/redireciona direto para/<idioma>, em um salto só.
Downloads
- Infraestrutura de internacionalização com